TLDR: I built a model that has only one parameter and gets 100% on ARC-AGI-2, the million-dollar reasoning benchmark that stumps ChatGPT. Using chaos theory and some deliberate cheating, I crammed every answer into a single number 260,091 digits long.
p=8
len(alpha)=260091 digits
alpha=0.76059909954446680055519182637612404564952882608728406710332547552128446698293425221832975998898637236392205440417981617949548706406387030215295746057916672370704613139993102981520849196296541741232578489544689528846131754394446902690191625779049723017787574644995645998191196995652299872827305403826756449151125077232068806629551684890541253359837329652493258169800543968350639741142817814171771642248712635256943748361193985927343404950453292524945805333934593051464400368944775599614089386320090273869491583657873220635267085752381431568997047115636182977812657757703361060373156080128282582144284187660985488238464936573395047573286639794573061683106383780627206026056150656838337588742335170670163421547280089023114092731598196680570418789874360527785012620300750930571954145011629243254516400206074041792073533356634146282504823968716433512687354617522447535226537565807236324564511110530062555438093437991795253214900545506687774536460148324596924222765480221641621437626327952134561001137023114376121540714156077998979093947571760303967431735253560946726570431340478430446602897672186508688227963721583043604075440291847665238470622066363109790582849794551747780485489595489733526399388459089360532382024529983473279000118880550004458935134473467937295051711283017650338558799208485823692220113215500266839592398203647032543908678681690879298999981442507542699041885524438564023588682378780079564157156045238634045398695077157108768698635811519895727218480343642120199553556922633561513832993044251371733496713714038013023954617181980966126968599387312241882727248751576631562411547791297718419456595377424699163855402216397498164401130962968790610811366593327400604013568472112487874809243504048659211852460086449909371510922263800983013104904627190443959378599852522275841718258587191805316977713078922928979606542956843709965037688753815417491928819404900356691314870543851739837241147833212652252936159211863971744398094927646740679199631006426174223380727505335307167988032644482607296973649537963162183440473216940605032558101492556872708356280796276003648091179335379035258289160415302359363858900666153704691764931925925534406272390086086237329041610751547532019997897493078792907406941578146573475206151497477485229315269180219574632906375189695908689730230717428916617325031998926780420806061386666046378583550071837247219466671697801843275332629753429308619047895535595684965817408085518888469910885027747090610603268324756078382749082990796132294651696881962928843629666725462682052451754753210899245133102912862225695572223573065210237545360047657039153983266072141586295117635668640223145638447889078773869374500518526813523569610350738113091270685978352989525552843022947752887419320518566118681697782148121899491792256309190853432950405647536031737543390421102237554138964154770691717834238142835295903088016342454100425770493220937550307457687387407409126952330334735420567375549795107901955493785165495953409323894060830435620570206635849734662458737137483566337649534813334036348785228898195429450462856437144411867635374055751693375071803133807123831194651089909562997282413021342896561111606763292751884999306433844319748614157717565114832200109899469975816243813734116195852267016018802776752909623986709057339404407174549479917623262292240692002948370839150438273618393548860906396549033845355030052330412431992551370306302513601841256455352161676868724062742771044714295698520709295655308658285122710482792611122497388344593857474560674622871831336277084951405000971113340387563469498883887914139569735935236194021553028097485092302193506412589956409691851635642983987557063969527137748846851575268282918423430404714076185770651479593680730853234713962389176638219778886764674683880048309236507035373824040232233029653571112335890752198564060769684218360193945775160795150387853632496549813389083360477029277096925068714425757948063374241049937951042803950342033445371303446297868003510919059361392419647184606546262096418104251841412863845536203737205379212842289342292425511612761797538648763406643439484569320659994291100675343273494669834294803734900203737013417100118038378603369901381043977052704473311759416532482038269394632551113175893258270851602265446447153690360333251382016326750069857718712564112021845023970168381605698323370567169959382223112364162500269668256178549619453546360694675626436892488960735152429417700094916671647123637211445155968709499281655596987120695031551539821456765527088897416280303321025535004008268548802003627233782548010446344265286141915222903410738787642286337933982028810804614620125176438395819871970310118074213659161270060303320147119740836883503451883920252341235864479602200143227174386696981900286498662348078264892352177818224004514752719165951094725795533280934772262927043111481494055926359424235970372517366815655300580013381348371759046046757473872400568034434821922993214630315067626807995383783042059170832893457171236288972797216424484243452006314419875885003142696934614100686515162788694105289772813597152167946168786411249023743671931125014764497751746904121124768439753373523227956202640430097973548435354421886542664469609014595268032114191836055029851062320977153773519695423715145616656763470440175259897425518305743905458086381771427323082710416295272874800283981121797120387330285020531180553330873675973570329780940699892742659404700958312842654586541380065209576923861953494953244980589742400910631653909675098367373824932315128757405422051078783149635657283367454784236047812606123857121673521141126766180764298752559700776860395728257996327358401478326259259581959799308176211406304030132166284562177971066260407527995949612839043009242449428647277062867168836292110234255156931233274729663376277524208114248267584966459255180803428756039291103438018453955386531039465367863091803176115996981580478418519447947178777991641391483748965509969338227280424957069644781368246006940789745400817158831463264620202428306475038428611078677821771576377491124868731029308476997399021578735567393066015642577983921537588625044630586559382290440763847114321212536067418322983439160609583436016154595162039972480980008332228395199864804623366206046287202278433837789586772432779453559606141046902293501407679939567136846571571044081627160686123718818620365067743226481257586704522628234395828674169980644108757404872121179081250052105606280632371512636304875614875331673091940145417773319286941057345915626255651256729555241877906619662397348792553925012003504573694580532849897401247362118653720468736926707714573232436483875436639567948796062100481620396560271087641548481214783088169791478644511421343721492599932808338944442497931996750503707235112639922385857006307374476783681421229116265172974206771525132488764702906253909587073474212412935113386687248996231488463264927114176176606782589023428441986080284180720406177115214452516286888557188451460815210496326837237342356812415596479229526963796184718103077582460237516373032222533111717015708360009181166186690893761125871866251795808680194454675535629991894668957901068786133880222894562528879618149779133631559413294408508925660066552175982654999623437731390458892269796380923510697846674851511524236432846015453841617878844151495980039563576277468710559559504734256804555726188729215422981580796997679996581269745921191688088036166307731239199049156530789760311766256833468490055725653931258165633614413547709825554792482801243007903177214026017284086802906815362569255783313807919992331182775130760898847381443827489130336791007435996494988663449256356596407576032037042868049377909937976049387851484409322778626321293144713204042513873194660105633232156901765941969751014202828772356314444902651251269300918644946117200428049344749431282107095654700352461861678601623592735881068759036403473880535373166022301274570514276804616802944429547142667545675143272142233592045135545713589472102792508441269682856084437121442734453596431049608610221712876070764938673298309988081317006986451486585275957574350389443844496652865513850933422222636435646808265687072317060243536366215919702941680133258636467236343604460913909796315104891664793520407151458107200330377393189336723045525364105197618678446866094876776848855145935421068170006587555400643512387023828224954504917720764100636200870509420992454158888516314733399981887759362941973842609558522566136501600005644156223359471562815428537113376652186934562870261429731322862610015089495425001449434545412102225919924752872028502296356828005239492882941451727218054065987947481435028418402731328638226359122882508844898430328384505492681038657793082287020532873923483089778902549365648252634899913502774099888711917849515178703156937257827721341028407183500575227930534413117949974122387752675340845477960971741691484023286722182936686890443041556517488002348174742780584563327505255949041342212396547936708911843336538611672001659958722287011009586434792648803519492611640809174833433699160739691715399816525889574764376903304639463002159954653568953732482568617001962812913542623874561154246160760917505884553729053860769351026228431265217434495664888734090602779849054111646975721102984229708675731050327792231950360663655358601924534192157063431462199691679554980955937647441387119458510455722292254930602000085017298529943018391539707128115102269103636130391850166105780428390896371390288202528948283189290089607075758795759210654736664310179145536021185898118071999824826475858149963386764096920104575668186308592692256147392895871823073456433440211252581338448477237978225232410058902652561385066844893333838747728803852386387116824664646824817016036916255256755661471496476513928593768702338738478831308164254414245655118209131884370225087353169977898716573363356970996025441219355836090236496022132391110897791070642850110249138078715353935306599126752466095648124899980927786228296878603245860532827519988760643395988696926590071732290612978947566092627148724282313454981871542909915965930571941721513364476016868409145994772071192490287994289503839837245950902627121243405749749445336817
"Intelligence is measured by the efficiency of skill-acquisition on unknown puzzles. Simply, how quickly can you learn new skills?" - ARC-AGI creators
n x m matrix (list of lists) of integers between Gemini 3 Deep Think (Preview) has the highest score of GPT-5 Pro is much more efficient, costing "If there were genuine 100% data leakage - then model should have very close to 100% performance (perfect memorization)." - Guan WangThat line stuck with me. If partial leakage gets you
"Chaos is what killed the dinosaurs, darling." - J.D. in Heathers
Note: Steven Piantadosi pioneered this technique in One parameter is always enough, though I first learned about it through Laurent Boué's Real numbers, data science and chaos: How to fit any dataset with a single parameter. Boué's paper is a gem due its sheer creativity.In chaos theory, the dyadic map
| Initial Value ( | Dyadic Orbit |
|---|---|
| Iterations | Decimal | Binary | Observation |
|---|---|---|---|
| 0 | Original number | ||
| 1 | First bit of | ||
| 2 | First two bits of | ||
| 3 | First three bits of | ||
| 4 | First four bits of | ||
| 5 | First four bits of |
"When I grow up, I'm going to be a realboyML Model" - the Dyadic Map if it were staring in Pinacoi
model.fit) and then use the dyadic map as the core of a predictive model, extracting out the answer bit by bit (model.predict)? In other words, can we turn the dyadic map into an ML model?| Iteration | |||||
|---|---|---|---|---|---|
Encoding Algorithm
Decoding Algorithm
model.fit() and the decoder model.predict()."You don’t want to overdo it with too much makeup" - Heidi Klum
| Initial Values | Logistic Orbit | Dyadic Orbit |
|---|---|---|
Encoding Algorithm
Decoding Algorithm
bin function because it only converts integers to binary and we have floats in Sin, Arcsin, and Sqrt. That's it. Our entire encoder and decoder, the heart of our one-parameter model, is just a handful of lines and a bit of beautiful mathematics.logistic_encoder and logistic_decoder on ARC-AGI-2, we need three adjustments:
m x n puzzle, we decode mn individual elements, running the decoder mn times per puzzle, not once.logistic_encoder to encode p=7
len(alpha)=1895 digits
alpha=0.74285114332024342325549937083636474565519009327862941959665140406783483205479218836647152731554946432856788703992188906990891731482182847524308776802281798217124682447263086292706558015080117587125137946881353134901846130213659216073847350085266801546500388056303279812229387014566738064635728388315625125612460908053813612115944371403488022330138204005465833529402443403780893627567256369296303433860649253101774272722381473011643003744092414141792080856154336852232751681761870825262961239388416686534036505209391584808776416887122876960233618275222404879749262022119613913874625326198219211198620416420976413170105387014954985331241357748594103136211408700904101070819345678337562478638731082420742643951934007189701107794645826238176372535654425768205812193697418665115645591019081599730450414681394654648740614534913490603387271476765995708667386637327422984549190564023567503974083813261600742256850890763198442464530739947767438158346711984686537123296971853036329532017930470957886617222952038244846792482431147430762987112113198332310791887702977246168036347134814764098024874588331258467793920192910184049083305781018189848769815863752005856715581710276074190641816852407672817742796240720806033022892180099812775701709359799032789650317971424349107886413845671496713331998226307819777294734024746164655829893066785266198516930143907068214149756610237486409825479704403950049986719886018007204851422317073595042856901520808205036921515904367496432996379033889021520978522808476522459195470488476590221986500425992848671776649140155585867456664879520985321530329590064710028585228533299150027623406426839690690773509222974472641729905841013913165150369477959654018728154622535075452933489985516349842376600009501513262596103419929725321662046257221998489659517783086965851309721070204164329693715232879338957676296906129816570061872627789636932222196808375062090735051961248623508890396
logistic_decoder to recover p=14
len(alpha)=3792 digits
alpha=0.777520986140695809877290611432054488497150630574765379930570415022568399703706683369316902945787001753863091938022769193671379970566844118427937990377064850291631901787584836841419971587497742018741421325594475338293987019129504815695639443472923563020259432448337861279819030482271675012303835858403657617363473612585745448730299890486669654463395533302203107939368687832538283199675875802680074815851984712397399468994292001429594640840485398843989050432493151821835771152091661093408634637217610246816850058051614811727699434149834333393916627330113336357280669853941378295056506328309017855439112797273689272014683786254487940941897529065806842381981026718600951370605303143519597392897061739839122296974894178881292550523751395518887880139949347652493731720587928974366940163226687791110382040729476761995611819772641793712028605646356034292705965924322556494148610409062312182915933436134884317276374303246351587159690173053886753029158101431298183405638648538352284304106836323900459269613944409467469226483965780671792367996413902602712684325045919358068037853273481106629129281287175779995730470595982381533798132789263595588403090395233688739833729707158361614843480499237033955225185239056465334517063842902787949489364016218555574674033570130036454936689560307150933561392102226160375719251021623478829747976074537973892641397910534370386575297529008844382245765423340932083547272711954707182734116459892341464380806164263136340986707806468044377814873965250024835175331312715129689126672760183299314894066607686026131222005344963338192699403605759492653612749591932164262045916064301577638940271324050851664666268087246118010688210991603557518806277268005292776112321801074592963355964253782258926704889303816612767982830810741234715149022808145470847526320743130725592966011622921539171871321929627512496594094226496957060465342515811299576619008674261742833189477956173993224808357132795467562666108141626850213813567052603611102890991290574451373940181586520478907462233796778054303055499734990414917485286631469905577511848430756161771547651022365987900626217827714793631956168541679555034368480629201604543082506129540762963079285937860747270386560163783792136622216576871267119258299305009599290216283740980912224923995601881534922492370845999976588931881760377264716060676351588113910746517647134896641535121289771076049041725691208307998190163776252424371444688932482880398912038383050905916249583123481478314916098176383173207283303889432497154571071000819080421564438390957881910255161947447842865732995438336091691031361435281364594415983359128154001456096489767948129586453105894331404044960906021895111351284009436527038209954522722391514558661498875080275021474257628319192534947144804243410284694196254029793654102682054071895833929214329216393882311618899523920247200563548976420139668963872657666183887092604156598689098855552091322791520494475004132629084793125442408007444066564848600849605668520278776224497414993050697741653706245136897863040863934727251408382256917640865011101819560179977904288048479898530966995558763683522664204778030765232903642722215122057373426970678115485647933051397710840893982342576119798049200920332303835744155907173772837505929983430099040398078508731730967823721141416269540477400720674716560315284430783209146528211785320740934852391116882199253932243053338236787475388242154245254654335948661942082379384902733959018992726634279243916094810421382221873921696729225436191784763060182975587683023886279125973413878417222255062254342611938738373774010402075214209128153493208236202948104765530872460630802090561108299874661073903572250554930585948909415257399347317444860171320505378013859434564881580432780055473598464340955156498696258388476931097883758278663450942610716540004469186278588909632845437161493476119994478934753
p=5
len(alpha)=1353 digits
alpha=0.720513558308703618640328591393307557764330936574382792747147164158013805385225876792947742458370890841526727106017186982377802193282496663616112790111484227447638627001821928407067681543901460763496878967882008659769520635557977409943763637913971887447476420204995149681787013296318236694714270696155942477229356166929431428352529386546481515263645920468442049504058850087791435826086914647316280441439117796649455284319996590409037447182365445065972145661011009793928601405408365681514990921247729794068024484607726728378600345294712802918428569030077847933266582638722578592842387536646679714745500714386972544553931816971567786704088816631709221332680402958680110996596288110423292135736715444260228217343348588516391228311471857564527271164799523998255231188909196037997115928054558604569471290293679833763591599293700326525220498537454890648353154414628856236436303301648361981146822987637373601745700037228621386998704811125980029123867544833360797156613190419157292916232960671344633088092512052341683987077366760610376657799304640784082313824799756122347713090108773378904502785140727021123474069209221831258884998951565308624996991324982743983920069760799063858081445584446341782537653193219895071820715112235749200595195165798891056048900786591514714860489953926474850128625079100741462465709180011767126386764464954165896796337707910680211314
def logistic_decoder(alpha, full_precision, p, i):
mp.prec = full_precision
return float(Sin(2 ** (i * p) * Arcsin(Sqrt(alpha))) ** 2)
def decode(alpha, full_precision, p, y_scaled):
return np.array([logistic_decoder(alpha, full_precision, p, i) for i in tqdm(range(len(y_scaled)), total=len(y_scaled), desc="Decoding")])
y_pred_raw = decode(alpha, full_precision, p, y_scaled)
multiprocessing.Pool. This speeds up the for loop over range(len(y_scaled)).arcsin(sqrt(alpha)) once before decoding instead of recomputing it every time we call logistic_decoder. This eliminates repeated expensive trigonmetric and square root operations on huge mp.prec = full_precision. However, in the logistic_decoder_fast which takes in arcsin_sqrt_alpha instead of alpha (speedup #2) and sets the precision to mp.prec = p * (i + 1) + 1 instead of mp.prec = full_precision (speedup #3).fast_decode which parallelizes the decoding with multiprocessing.Pool (speedup #1).def fast_decode(alpha, p, y_scaled, n_workers=8):
y_idxs = list(range(len(y_scaled)))
decoder = functools.partial(logistic_decoder_fast, Arcsin(Sqrt(alpha)), p)
with multiprocessing.Pool(n_workers) as p:
y_pred = np.array(list(tqdm(p.imap(decoder, y_idxs), total=len(y_idxs), desc="Decoding")))
return y_pred
class OneParameterModel:
def __init__(self, precision:int=8, n_workers:int=8):
self.precision = precision # number of bits per sample
self.n_workers = n_workers
self.scaler = MinMaxScaler()
@Timing("fit: ")
def fit(self, X:np.ndarray, y:np.ndarray|None=None):
# if the dataset is unsupervised, treat X like the y
if y is None: y = X
# store shape/size of a single label y
self.y_shape = y.shape[1:] # pylint: disable=attribute-defined-outside-init
self.y_size = np.array(self.y_shape, dtype=int).prod().item() # pylint: disable=attribute-defined-outside-init
# scale labels to be in [0, 1]
y_scaled = self.scaler.fit_transform(y.flatten())
assert 0 <= y_scaled.min() <= y_scaled.max() <= 1, f"y_scaled must be in [0, 1] but got [{y_scaled.min()}, {y_scaled.max()}]"
# compute alpha with arbitrary floating-point precision
self.full_precision = y.size * self.precision # pylint: disable=attribute-defined-outside-init
self.alpha = logistic_encoder(y_scaled, self.precision, self.full_precision) # pylint: disable=attribute-defined-outside-init
return self
@Timing("predict: ")
def predict(self, idxs:np.ndarray, fast:bool=True):
full_idxs = (np.tile(np.arange(self.y_size), (len(idxs), 1)) + idxs[:, None] * self.y_size).flatten().tolist()
# choose the fast or slow logistic decoder
if fast: decoder = functools.partial(logistic_decoder_fast, Arcsin(Sqrt(self.alpha)), self.precision)
else: decoder = functools.partial(logistic_decoder, self.alpha, self.full_precision, self.precision)
# run the decoder sequentially/in parallel and then unscale+reshape y_pred
if self.n_workers == 0:
y_pred = np.array([decoder(idx) for idx in tqdm(full_idxs)])
else:
with multiprocessing.Pool(self.n_workers) as p:
y_pred = np.array(list(tqdm(p.imap(decoder, full_idxs), total=len(full_idxs), desc="Decoding")))
return self.scaler.inverse_transform(y_pred).reshape((-1, *self.y_shape))
@Timing("verify: ")
def verify(self, y: np.ndarray, y_pred: np.ndarray):
# check logistic decode error is within theoretical bounds (section 2.5 https://arxiv.org/pdf/1904.12320)
# |y - y_pred| <= π / 2^(p-1) when y, y_pred ∈ [0, 1]
# |y - y_pred| <= (π / 2^(p-1)) * range when y, y_pred ∈ [min, max], range = max - min
# multiply the tolerance by the scaler range to account for scaling
tolerance = np.pi / 2 ** (self.precision - 1) * self.scaler.range
np.testing.assert_allclose(y_pred, y, atol=tolerance, rtol=0)
model.fit runs the encoder. It also scales and reshapes the data.model.predict runs the (fast) decoder. It runs the decoder in parallel and reverses the data scaling and reshaping.model.verfiy checks that the outputted predictions are within the theoretical error bounds we derived.OneParameterModel itself is ~50 lines of code and the math functions it uses are probably another ~50 lines of code. Only around 100 lines to get a perfect score on ARC-AGI-2!
Let's run the one-parameter model on all 400 puzzles of ARC-AGI-2.p=14
len(alpha)=455156 digits
alpha=0.77752098614069580987729061143205448849715063057476537993057041502256839970370668336931690294578700175386309193802276919367137997056684411842793799037706485029163190178758483684141997158749774201874142132559447533829398701912950481569563944347292356302025943244833786127981903048227167501230383585840365761736347361258574544873029989048666965446339553330220310793936868783253828319967587580268007481585198471239739946899429200142959464084048539884398905043249315182183577115209166109340863463721761024681685005805161481172769943414983433339391662733011333635728066985394137829505650632830901785543911279727368927201468378625448794094189752906580684238198102671860095137060530314351959739289706173983912229697489417888129255052375139551888788013994934765249373172058792897436694016322668779111038204072947676199561181977264179371202860564635603429270596592432255649414861040906231218291593343613488431727637430324635158715969017305388675302915810143129818340563864853835228430410683632390045926961394440946746922648396578067179236799641390260271268432504591935806803785327348110662912928128717577999573047059598238153379813278926359558840309039523368873983372970715836161484348049923703395522518523905646533451706384290278794948936401621855557467403357013003645493668956030715093356139210222616037571925102162347882974797607453797389264139791053437038657529752900884438224576542334093208354727271195470718273411645989234146438080616426313634098670780646804437781487396525002483517533131271512968912667276018329931489406660768602613122200534496333819269940360575949265361274959193216426204591606430157763894027132405085166466626808724611801068821099160355751880627726800529277611232180107459296335596425378225892670488930381661276798283081074123471514902280814547084752632074313072559296601162292153917187132192962751249659409422649695706046534251581129957661900867426174283318947795617399322480835713279546756266610814162685021381356705260361110289099129057445137394018158652047890746223379677805430305549973499041491748528663146990557751184843075616177154765102236598790062621782771479363195616854167955503436848062920160454308250612954076296307928593786074727038656016378379213662221657687126711925829930500959929021628374098091222492399560188153492249237084599997658893188176037726471606067635158811391074651764713489664153512128977107604904172569120830799819016377625242437144468893248288039891203838305090591624958312348147831491609817638317320728330388943249715457107100081908042156443839095788191025516194744784286573299543833609169103136143528136459441598335912815400145609648976794812958645310589433140404496090602189511135128400943652703820995452272239151455866149887508027502147425762831919253494714480424341028469419625402979365410268205407189583392921432921639388231161889952392024720056354897642013966896387265766618388709260415659868909885555209132279152049447500413262908479312544240800744406656484860084960566852027877622449741499305069774165370624513689786304086393472725140838225691764086501110181956017997790428804847989853096699555876368352266420477803076523290364272221512205737342697067811548564793305139771084089398234257611979804920092033230383574415590717377283750592998343009904039807850873173096782372114141626954047740072067471656031528443078320914652821178532074093485239111688219925393224305333823678747538824215424525465433594866194208237938490273395901899272663427924391609481042138222187392169672922543619178476306018297558768302388627912597341387841722225506225434261193873837377401040207521420912815349320823620294810476553087246063080209056110829987466107390357225055493058594890941525739934731744486017132050537801385943456488158043278005547359846434095515649869625838847693109788375827866345094261071654000446918627858890963284543716149347611999447893475309605579452038965817579682316192060948548042861295113696449001528404165599202602282087471037505625513942363539825477644456135579268307015113598424504587904628066450517221154571220195659549359431981180475685829479509933355157239847206706609104634571957360639777150687101519694488335070332957419278892386774573504749579369702231393731984558416722101068704549830197608342618499167254387092849189608444158737987433983193909990531158807969086217254527825072382445962477435075509937232974381534217007137941462624609735045835323836300679797958272851660678755110976481308730610249491351632605099746030415946138822097981066963732950288933589068619888821068030708191263646538298370941435943609537584252404596761939432318584344200915441082788291258230501272165408625612913338158159178918821149330211455739529828586884055129099361624536903263474377554093843722852225229207281800451960024678722719136150049971246452757782973350440888732430258607230818181762407335402759656925425067483115779742409495434255611301526341958316814822663108653298464047942289840998870038174319359525149580133906432445546274875603078981562746170738577886575821351846011593212902981367222129148632825212609253096437625846626018402018198073470066907303059993096346800595778981154961260406794270268121234992780479874283028839246744102286681730339154164376242886730534324614934345024955702696028339773366691308581660710431160085901607050009077404946972280030757931730134697131646907050047589227282780572278130794981863140235950397593589334228104503313419293113977136582071266917176778783356911777404346015224091304734868227377446121147419328886617498181851892384209744793318863199961302696146701027070397432506591393944470634677074691736850519667190413170248419551782720057991255046269711658592212782241407893268150370087587524898322829284391295607349502151478363084641739770164932894314054363561133957269171269546291337801264583841801291258707306317907222137195244716508619333454887001974315844950342911641181835667189907057086180015974514350206052492108711531294691215534186653082187463035519778205505773658868265355469217524319160568542812273031287841416118694133423689419251576670194066390006554436987050623279764546740079083255317977772001709207180380065597036954809171501273317111489720051039411874109340624700119606063828998529962763088429318189327225480089343162201664135082436560969748437743645681224830548956989196579805270850470179552405611423648087150735710828577997798585754873597390436915652635021617514941791981533024173934505625559727156726248866568790544526112367414882832850131643871419117372149265021445296748418316217401791501340585177795808031849926964789461627374591955268519536739412975386596119113793475001323403407027404711948764445263204534524998561397426625600947050350864886533256463590229741749534136282008867066710439693366563172259141813648689016333833040788759330129892508027818719693348365947589893481826849517365286938504737109691580260825563532633074511456086576886006858091121779466712942464663424594579459131110667478791368066396096895359894758408189380196369963781695190968545741440971357507096809023989372650010961897031486280752920519506370017549775725339510476777287351473143449238026646602784179923899766587731391936986111632192076439459261059933123321546664517516096198604487874734516277551285979881334028447707549516027882839264361932274050302727030733507386633684661232310247350664131853780096975064321030467117269287848331830154181278034850988098340606586566724456331903715074241864547100822178303487450962649522633140555028280549214811647820007835640744730765706934070371831805432311328403659971338980473950137548925779140814075338138811726791028486717604958076535408113254303395629018114927779476122363754513721451481649604973771106804681304324648757607309904734650033928278153688544340339544522242757236292364390454976466499940818248859413198342516270673272455150124229537575673822030611838631123611118938902919196373551102205296757709194060835975865740469200228454417807374670787460671478775404043889825091256202065105187187077624958576174827148256384350281276020771788154410785820459631844520188535719004072322572520048292216283951040720942863155121258661320128519778104293207715719572994541951945955579158188108608156758593381241928164688940969991896265126381628885676636372033690455823885633004610499072794609616467112717249919370349455922408984776736558511487308411130043567855627541257441467756097407915038408997313400085884276992853860098075938323698988833527148419521009588803260765063268795047347398363261587333808228214601043597326722810402471956374176713814618052142412924751425822704699308972531081832901226458845706082219624238551694712671845399594690626132382563380618856540176364660282850282111764365082840000576036675184107027494490328365828525148039096373601635011388585069848973407507151096370474243441701432354287372015507382138424253066030743911125657294513158885501091138537944030729987841547007618289624051929366106740553422793931939311624892830211309934359045520793177311957114794740490632789273059225382533912800885300956899425418143159130986886309694725989848853618499262861082838418044038217988213524413551876755917874780559558862507228700763394900215626927999990528749974124042473120589802146770960611336022911429798905865129650839978241852902957717551557624236752087783274850651466624238919972907259941427198032063905529386419590546702218456021048085005855852893074431629501355687004669537284055625843611830600339785310527717610663806910868500732982162424773191714001201837744734856975445931011593988678188826399145418846903943560146030146590664861092183779857289393718431983081783262999960924508065028906738574030899637661357126932827304636759316984924163004232820587233591566446313334484483406972234266968722588817215239713825316150164574653057103844547528097203618135812079956163735683845741677826527522049512238413420350615017618241653379386830575536509292246107720078511808637801684500830855305549342561247704811067775314349195457082157709923088915010087888175102575667684522786356385448568448622480101122267215242449913905645355782760056799748894189635974526696120788265633114029435335669584184919935799876240571438990262793437257183738066995606618211559868663635305842487973025763692484017441210937422203190525731240283687797378812521953843676005750295315501320195267206454256482302649823714047832073450262622052898678143572402552041023092010090948220618782860195888200594352268453373383381957317461365110453196771679747527329799813943304934690512757706433243967086415602225046703465373794141342448464404263208461881397327500268033372046435229271092129844129004192028669731331027379608301758409778811861186177082327805494555058643136127782499065092283199047580179226510763957409250050692809096370327909001945463977871356185770549713872929467179352683511012412291068687100265866923363719106432390669950879446186016462172197726923493134919255047399116639108350454366647693332637464735576862038728492747154023550034753069584057892478765799311476438185601516071417752335127063653894452095623542062605860299018980563684148669862922076710568855137844676677551536358109702807824741585494125717747806858065367641414208963074984726277321158814338286240271364653810238872436573000055213165067112716283396994809336584395756904339294691865846498340930302411025923141882993334568136479156113201900242022551586143959967990516510510034888730262081788113906831665588009657868519842410232090890250959292416959584027567287844428292245151011461733015047757896991007145398992348345425476932106496494404464317333110574696650641263858643099659739009449265995166089121733910964343716141356586688640803686560563295200990211943841000282949346932588202514319001083398168621738728172445762276586952982186901998943960605811719135955009925684830537617473291902038643675040408183002129937139813120611758163449118383754693502266358238574498792188843374175552395022205614270114628790755454347831907604631503618553928285618778426008636320246832895464268059977985718881519610894559879020602563057039437367846810765783488794738691314734981029550294828682671250397071364059141547681119552428919087062261657790434413905186619934104047150754095852265222745101390347381247167531493722443741398488269749941315640404887072173777833563769065452154601244599156594656354189488235742429557041015561759155732948750821066902808242542195534531943535862690318615924272266556087525370620917110866666623412969587680581715146928707945187062452584717768855913635965392741302805655435037976330037031669174523852877853463286855213265847963274506776409218475449702964039384914379358684002488961663851426275064911221918464287123294751545717870935891949837759734257625884905152079892115957544569629615258711088946325892408122114226450651154015110588854525310635690429299916193033403419812167042130562273990817642185388307525775130415288948269899948929534242695442622526970524327823358114930258716234624729556506792213765346222794552797063114816822934549804051911153481245124570286909149196746465332508483448675595053367785370237618165589936435263495690123345291593888770644227742089353420177435479553535282091703529223221200192507452671343814347421890978743201861569451064920827770203643226608894989470228651525197090162833991828240726821485248609144239972669543237919022933279625765372205557974002153436337716284280217855728359340355418220568932396928749782440220269120958035802743788946273998779791921005312933878811939191226708258445007532041069540482807369839510121608457755913840787214436658920584560592722827649512088597148475258805959210470216973539768691594228197596540156879866222597913403665033975502925227276106964063027423883051802213703225212201648104293399283979651332192924606881386485583720493190050326350098003580933286683062466863744568767935189882389537834231895968059871630776438924285145725046401622760192531052914151509863461700835749012122838604535536318411164286771108202079003005057181784096800614455977294687614625213493058967810680933114983281821467402482402686608081042721779237669127325047462196819687618831028188341446236176601837952105377620505113149282506748903018129282715892912639579552182130952533918738812450544583667421593004317279842620328825533086583763631711163394354621848745748862458361731454124807921099611963537687818994772264464782076837758100899245016297625962465894858424024247489145621173381892874601711907985906537296138981437547241233621931218219086114230862846707767011725461963147216920962476080468571987762458524723820306314227175401992646216616296026645862396750777440673840058186041146029099543162479605491250633615237148606589470413312195667266270235792983793774209658614611096502255347223539033465529125457673569218577930227138928296219497309089109534221620400302698015126645081184417903345587123850776986315571819451028277229511121576677973295163612806405938520250151746784103915938274038246236025877575465232238492443755804639021679154981421872502484354391163296644014742943420728844899712260276528444394357448624777989114459087523362954591909433261663145836470348427746060129665982503414879243528318598569908250503862257451455225350271888703868085694651378659465754499992137673754104228586716875101183791817503968540707489133068495521297970483365038195650450834014461733693898196242869250994277937524303544730330574400338161403578396283185271162556185106333339988198675973177259507128381208022658541928827214488926121760646152323628584766339195840653298010429719419380073187612122293401248272413441768133047633285522714096554174928581240571186997505102924467357657955649763652171641953477126634702364523107021445834514343617817434864125684711151688548012155996683069645934531481115852193923359981383131346000218972770824298269911061134294743776073603479495733572766699989599859241926986324294209711779229424234423582727653827630573785117311519034179140981881309694529556075238777037564711749010646911000520115980834727572035432357582624966863876112184749239231656547135779871558851341036300222196748763360374422409596198374023798865856180146523197861287684045428667657198766361151091424282279514744964419858290095360553192325145400722362494050302801863559824201616604046514709865049996364964954105299459231581931765639336207065731221366135145957133775689289949618218775370915028536373826478675968897759819872703209167586470515249985983954381167162251270887291145155739962814298222613664205557985637160470886093653399191521115616867789214462761049698874839372427938210730962718202695166656224335415301072780327102360563668082886687761995406089471726528244860170559806629114159621180899319623620423364641076220640450834794006453628749469834883147257559366469830965680886510385667347808870031141392665576415305601911941515097531414125247110144344228237231055290636481694583059382763894139285060418136018676836169206819162005021260815628138012077803493576637709213232596906697090046207676194376077684863291809536121590511155591824663611384770901591996998564439614774611487042445983824425140212102367385254803552812384643581830038444414854398546886372957298839544857318151648019287907671900916060389241393258433574517775401415788338872629041632705571168235297767929253963481988734282095235309622731553338373102003943560660245592596738383082898317511560479722980223206187508524733056764300623242582972833589206264588766325636568690901338317769158163876310408475346280636221941896053882425633937755632322391164025756935779780732624518569700669012839799523519387277447513569588662301440041046797391775076939441292264131463060037557114826438260992159535632170273467401294390247732313411521723870477908995150111624160486199251347652842704878122083151594667270188457452372442201176799774439385238846103823843803365482825562410901344189568292676067613141496775712395806623865189881085741826663708752868697809588154039911253470086926554779828018635328554383047379041948482726699695786336155514715015496154724110973915592100931338948037081888511166174154207304544774519565686598579622821166661481829870358450682166435524647239180985637199375856155511561396069578109164406174985477522962390770961661836935995988085723005780979605978212193153433730840635732359604443747986364382133341815918733115510251772720450728678256803116747490518976178998214614187493693336211371145839336801060464012717144408901684417350271769582049702345470286102695063107568118448283133101842661579501788872310702335670972502231662652861663470232314632489828743200746498994958806717628494952830361656368488309941436222557891847845940704564692828177697648390663734181103993758168779951892984738698447297412660633201688699805962294582478872186960902683247910096673138016090607343647690748457805770241932004334275609465245151475601954710048766121413933985264378266437699374299708235173226438967521473670605617488556132941304115116199944798926705006447216505609310064301297375358258339735224368553785778054541525673753431796916172383711888602531229558322579135727213377579079991510047577113676236784258312372594555490708658438921263711749233709982601750027796973037148866637299175724066794174476039834160350576865089835271286769766156320545525756241166818520083145617667490729675296111232058224037571105115348534453026068369130848155456746791933761331500567563420077023811422917734652855727379303513627527295713667057591223191303743821044734004815017097505049711831006798196760323853795824776068744616361968327462031018543797558723728903777399483132028033862354772405648719155903777882714717638550053829053017352183800527641490690769714873204011387995452442526707474377408449691185379617808496312515161914772214724682767106683249306661736694644201852782719398935568248647877347754760998460121963707570303701313818226634806765335899726142229836741922565311441322331005221627323441499837345470397813352004416754857190194834477306825618297835446641972002278955848225838098091865661264671686157150081926300992406327694552998230892077627144529074534497423457107131991288973156690830589994534894735932792704946167356512821502852479617878911851099302397542484058734483628203762533599648672573433327065889020507201704642551693704756240762150930009403368900646255195951602422825714663542856891722744941363911148586237942086248402499319115710076998635065047483530599249015033658986692337232409733353500481556514557946533315961064575478016102966291761867728851918325089854165763049647055299189923756948435681909610760867830895733483833476361021251576920066439430853963246641849796426494929543660709700654877633834317049996049326550190471912153160122730870390195169135766245318265210928260465479004813816872852053109683652234672333994850410331564202448535088825461852209002070860323979625105780607895809214818666247830418498443929913870835672993659967144719046881331133015267386420199974026022508214738866347945524953665676006629391295150774285141480348909004747522267499093197709322246106380967677332359850446928841360091351577444535227445131747033604870713510595378703055944361162905685750790475966338251975323262718374962040217008068971739429391341014009574708242899441762254632273673306504300082546039697166720704247867242336729053237617081636279639523675812495876165196778283450265062582970554485145317099972020095766957187755681926180706556817665829110971108289909997466502310796617714927083019338885881268875310845697876601862001330947343927973233762047213202772060022270397094688944375362504222233591662438178172077299380554175019773965300558571706884972203332711325774263576274489411818835575311768160644810337670531731618062268169552926270927190451933350907068351947421821894280943416925290170513872482386234085382650770073243565231231093566139004213528875502733010111404938959296246018637019003119023192766142206099924288089865341331723545480346449152031249808893650473043178414709437769876861419883951752070475494355779948248311636287542410302668026055970950722826163378680237128577243325752238550781615167029418696954046259059490654277042733542998827541199513565128710638715497990555912448894254136926835373998612231487604671829829142180947843071449652156423942597883334175519346293778888670427475742970394384119554684454412642769499274918163906450997840461001674838555153981374271490097726560800535041922619315513829762265441490598169942860953862717125849672547155627935855825092694622736717241039166096540364858480394197869892358773307524667242653540372792207756481206214598825738256939203436104359412180050023283040856233820122140990148281077585553712315211236635985595365594853007850860507796573810606522903018208020310239895111716564736830998518859796367244201610437322521907672498695982580828062370595649975935410782425394636962189342088032939836016212756554946806082429093017454946309747546465177237808816640073871480832746604529777942147752015393611662153158268375872756353772376471194358440762614204825191606312037446875400780444060856150499539458285229333366995006442355639591137637023763506335708070831475037983794689014461614055010097077057060755952780288171238138534397397107834168297485334536237184772690585436464705724996302929747339010953696675768512757245498376461714810693787987990215119888143385506926331813771602634458403075140483866224137891272062750977002645908153064191127849104527615660319496234632069070220513591642862125142968008423881255885272455597652600063082867457812862127269921562247468358980426422850095603838847705126002454046218926352480606511942807886564444945436866375811827451335482135747114092565728373538494753907097964698719684571677805652172079821168165473141287398393140388042174692589201076499593726408364456105079266695181690516541690439308181728897067623815280068082428054446057551617816648712952966480940542277586483773376787317351965040772281372354356387134183128779097405461154800398056959812188249187968269062032589789964388178125083266183520333625028713448738282475610658588459607464635997909772302328714031265835885700031850796624429131765776956391573999637409788545786199004330677105980525747840726940511381976123692572311687150833379397837656874925053037172761480347807611795843672198828996151971304039074221657957052983316393466804887278837517245297889006762854034832474222195328483333287637522512955463214417137537563384047128996440879872312028142852508144768500963815270013721616608110392052788176703783763918189296612192150847875150278303306843194172121536265097000422815976308506850583219972226144357842153985475840397942398582250082072259077031679005824243253574037347835040245350290246941427944658453841389318631519091394963776779858171719572756726919308186657560493465350726032276739356961671026852015815551382298069934345393735344217392026682061604932015378996337162301980001168935191881522343546747973558511967908201851006407722039952708126500430162611990474072165223539314825704418190462269948057782828761209680878891739438640791682813035456196992643552097924792677702180331339311156032624145457930367193291578412581834823259263151463162308092973177847971203634009616253359122502534952292702565862759512515425248926881229887512316721335862188054971425014736000871599929472410679332337612263528789355305952501972036967381961925574932437492959881800976664618542968758533360612392968709678566336333919310255729927593333743428706431603547591383713219482908058939586399986335569506071177737393863615171207315495494639303498076777680221205590545447094417489155475560065270660262695733365369286890002804163132727899212362854219166921518330917752165829430731653620234142640892881539045155670467357375026135154475233220712384423646652994377297583449104093219026129485911491173125988924065183829382737595828476221413425964091176328891154854232885003025336512033851213942673838241335906854907539573588021929733622868961050025081437411407295513517998238046052754325273136895949847867475805968961464350457042316153051818790920000158446179128436806436570000790294610285595040678286723926918040038443365021054121194442121978874313329457133851454849441000707523278788164037538508874425051917202292060232383196542442236040596743488539520886735896970693457657732659899196136411655282255424926676702297611120875153061448987726713437850371776682500421350038683114751861327075789434437979749187667882832813486630586406832677193086369201349107337484130017390596345703088924623431243002275965920296082804437360639655741428692401763310636331864904871239204876841775708139105920429809779699525710049136436876962791592187932445389358473069766897541875250853254676753571789761938992192132247934292470019109966904477516989225205558019027823947208105103308626912341943354722215843279707755018195089455152808342206945053929487646879900122707778937084385888449645296908362764053322324825039917797630413426679506624467797281661237544489369845434338124627919319655406895781161708287633945161341299884719880913115516784150515978967131011438764678794579213546080059850176284819618773087701391532637803012052368439883475856588216271330268668732313721750848158208974377591239074677054501833854626879378811218956424673859003594168483625753810829975699715535007777461623012954976029267569526610044414019739632372110402990519902219725163094899486044098634366708361530826384724242409190552286741069343187989450959928728319085934945241806649663692308956111610639461455978783195133872880432009214887080876983922237408120642329545095685398525014343288027906366289165467559888084525132248686087692135587382675559451071274038143708358417837326121255455654413804875115748847491039150015188026187900586240980627335580428198349353144848661313941408713021495748276739237606064647914801857094999372380414925977948273581485577105600087193852290587779086731011218373694844953699121322177545213583007128849426797222083922674249727888952316053606128240087717206152278534000108144200750847535751537830159453522675638032728377570033226380767940710943731466692947118121544558636844825892298950659364839939268533247364923985950341844940705548049747844146558604037986488338538559805346315943016049172450308393017768450430568866708458680143171171122235898564863637797174145713946915678472444726997362489946432807292750061457912412491543505077987509299693319133881582264699830388038633524524040969864030997171872942835675178512451049860335404340422838540273800114292410531399541288911577142466778228813086998984016428103090910356867268517837875777375056561488078033740790225252166050276746436035010293109670430710212440479025475824436334511218569626946494942033659436661108091711392959544378434000937316973621075777060855271260303682281058512857185652266029166424433803713696565224175994093706795747371674896857134780297234248469703032824042686922994864759567367924686461786898783697503172704227733229068866495504335442939207994417608626993723833073304867203163178787573665159280078324833259882537910225535178459393777023426007470387501551055734688360479619776681786924126125600765808101245622566360045979561828544449244954112307986258586095747313692258112144778099818764175078971018695010377302775397221655939184430589472007658689482714518800291905357771999596636122296923962449190197238620467864464586065500152712243874621475343656075021728778785806519035935045968847905466426023257614118936250473510931114161144191423455036040392496498234951280144910747163584028818375010692309667818858331444419137078916340879318516593453571485980772997299762461522894073591430738869732974020293373835409988330434909979329128409485483539304629208590667892063442095582130423858222920289978785821438704364523939159002872054734021423436517239413724869081350508666253757680050540763789123760834460769062435615902533843172489690548036999034499877308812310652170700585630492486763704787839467848467658412508737592902077553552895587560516396340982714931728103328306047356327931788948564572303538811389276232551454974743019312345580462372210736122781451313991925032484911622258228975301430560198456404755414910172089415188010727538735369949111770632891574697132835922009843293095632227425324891373283138591049419044636440784106703814964362184347505802249593353932655430376493439198874364181854720682745447835778234924792916939357347488604080467357905618301444366531585244481984192341708323262384584319194020562129512475691146316568966500881634836359218395319089586434592592622189070158884112546530291498551019666876311464684777241841860275553777634979666880567604265311967145473335008614305717216903372185269877430435045587025070385874427370876303808645076999538492796873948000798358959362857354471985194459912316872629479680753226773870620733892567600179612290956096764045327010635257522243885510305658360180736833200986532957679730915238998749336867374992894813027741027078456871353905743459343256644393064377047864086721625859412272793971099911612314098432172018597878639869896728377181197880511160393239233293743816193213095134037683408409593826578503377082056242311664051953321536915255718715593142106888933753463848069906254006781449816280097527133146818305640686423313557244959763393871635327135120926035620349620689094888850593068636280725561143486000881013557757195413523706317178749362547139919278606711781388385514634382154788029357249906787883323928078885747829586703906176102287627875943650237053274537897799850868353382222599779883381931347791657778016686408080758002024223739804683634795861487414532894965602589641609646108491412696963782864047453804713887601930345829675232770268637427100500916863114298232581256565165786046379202440364985199665324287927211299600648095234303135467748147535282750802017235730983696232226256957019928439521632885895356378741914998478116336976535536528075408047488612740336355804982538031769536232833969750658398763873778783244207181760581027315213700487109293504001176174627049741323775004550045756458335380161534915029282837443732177246224218861507801308798009467628362929101271491709016122463288212238212681766534408371691343502757600886139724343935642009389464851590060683616243030276381631731070287794838114074048518621584281674714513170823918503289601893591020818332536339607335841855856800263232076647711990527787726194088395861470633185259787329327343513612862272099523696983924343977138628487176636171975587777730714425293155726794436250567464489581317882966317829598042858867510169146262586294698717576802531321170935620311133232712349982497314468901851071918193604602576148176962278478872584630738188617429360939355279177117060936068548706996384370713893362382434254546220200223839945496111386139314725581069169458748593433792536569730909416240456025030099839527492801586963105020253766151544204790239884248660951038787501611740884674004460818842511795571018279299220457439570533164053369121851091398670727891049731886788701041309767716677206653695198679387897207369032995784718038736307067676864238538362453837303375782329082867811210406254918415553049103266753640241675864086765653854552370186424729264343302633586548255501500658159447136402629771292246519156024033376636566514964544559672152344766300601950732579211624729997414988797053873294597948710569885586979639551694210664822310056088512875246841412086727125644682556532443994310583136666004262826301162757632846416727757047776425557570122802303840914515156373169006603506094927874290074770941761762323717085425593699877794440897617056667231465492437069344374325828654692706754996118329186568394173314828823451686009042378430637395081227688513783961228477110359683842206262683283954406856426158364877680655241755756445667264948275120840624160486759444217902063188328291049748549295390449948110735589488639629666418070430755239551471980065087202076125048718564185464864076606201030776200812820860837368361116903804793763488406126218019432144819888783948961781701300890253745124130342287121916213658221009309727571737122132170161754009025964925761639121017661871838181926469565029387450386692667024140537707520186944001186411102586993469701912856430443839489471674059299558907052920614368898645326742411753038483804368765602260841116242101352743749436837997633357725003335643530990924375570317893497039263759425079184485585832321970681384843469642772204931161016215192746301920073721091336460252540143687116861578590665065328144892612054605060537138008055005202737537886246202555106598001252038625818018417245209248212722484600276306039013024646500011580579827847518005350279473801181127757261587567305330800052159810042887222681106450379490474281186380272328847772265959210761904632859862137689571275366638030277376679195299684837810641979218565329272965316921506532137957989322485663865235167220976478855246320558667636441172745546290341923666561930428975837564184338679261542111943721863522724314321544057989827192052961324821350613828323915385724645678691815964391289353774084539556858819398960872811838344012517235427595478261200317467282766322546057102196217653885566596799865805734673352904962384702815993773432343649742371192153647847843374197329516078237038854068473463276362352690562116679646600713157133701053734096252166433857246374391662670857902322528112056426594129859011800120960603694725981576076310229244966596941324804936798129238166194945790952914706718887792201274105036633748648130920834005216746715563822555209090512301648805906308026561194251497810876198114064388080025672510381223287449561207448734737551091304709241171412225000848133177383313036125107458395524097440309877412997105974468635400822386375319953244531623274263399086940456463306222151573456471325344134551467531513217155980385456995986066235640196047924601701584530304909642593848033698294488915638666056278401546767803966484574456507404963629056706911543025029605355715951051458729481975943000006139552985691002173813342150853235135838176312617410567843313385273337057510065567029084597758789322139745958632192931549783690182941593310795330222373324012806279161613940244782001356811584655148937251075707717282494679203049789118969636638216239390167717497909541792204400760840450764793992035542347728501205918484478310794906874198810769076482258989538007441150707805892245844438184158939542574827707973856059541191646895063655302139764762832688371537281004000295835143126377272570429231553989779412162817213713240933343842177951432674785216675509131020564648514943485703475686823321522917944216714558209349113946695386579954009865535386363393154484558949693259647408432825729121404214821919988370310881101845124454054982544036827588375537263163726983197656123690014438985473001908374034339897392885666660015381063195648179063326332547906765223155998225828797195596335655729278135562889786669836550419418081561321708481917261905740979587161487564147433851424454164555053536434633054759270120224914995945610881575994617907064304329966041870833887817903264087996712989405486938948565827950188830939856524027250122529763951897194883596322344944260129210252442064634755731878854498795553092190075137075039801419941778387193146732753651555027752195866940165216956542340897173120858091943522544148575572628498863774928926619794284988154346271016091576720579023622297155370385209850156170302450626250506499864715342575834776026849863198075254104032938909898563559415843783733170419938450163197281254466323395944721701400790992192250040656291186641749207551672852291807002731258193446224598176755193366780269381707113512404212498464463989715564329694102286338649821292876474225093794398104268583786058970907032941585027781505585000713201597206083926251798695244241830644394918541843603864813813491304499010385770292526915430870022646322744595972285285727513732158253806260214056675075841209596438088313226646691326437949116300012422431949981932160462421451784691497875280803869212365873386935571308271276093886102874019059558494207676660183977722875588340259681123828066871031785455560495679471946052565564308185294602408584623680547584213591191663032955765834565190236108857042348319019636290893255958871631000710378583462116979508017727418428556777806515334399525891517084373973810763291744697723588399122936630625653145114919363515804146624158827896037204616189039062788584560744050710032531517573334375289230018724030166887683062464461735756570157010732260840912446586335927263737140360631715453228081770786583779552734191280580082684000817185152307502540920651514771528192877020780635663741984426531106701055801951721332353343204834373299253870922970282149807668572338046416683565387088801290661387995255660583626765489411574136972752634075360368773014154892832657831364297092866796822013868888568340107917506560160012938408362876397824220138133114149848034464429074024607852245457153193558825674837700920175521524451730605512866930025043183707740285730317218272392709682923456113555912224537601701593161931963331721238061291226252074526197409811995842314907005400830370067852209549840675506387329684864929899609926385079825007614498739472422560815372656948610344561978900334379713554901890987414566054284343772486927076056346892631192645321484804564947613598639689174435880129208736231930759483230772417150335870975966222350499491145781733609438138480938416769401662364310031385902329685868291247949103797388301349344838028860220893634738613174910489537444838569987703397577720311648085596049836801309188783215528140290252349636915749137106519239729967941368778371738647546122752091721410935141381311804636828008043011960596344689050101891327312127293586623229912119202509837405075466607406939039683831588834288224452423237506350137000154527327967687527886957154853208764924346259771655733420083019727039987436437443201689156205837712823878650511034738579435391343206524119411814136904527809761684810197779063393705193969213561686024935075179256941812998351924230039746523453499631726182237707809173309362801932852025995206753205030472057360735186869130601002812385845894878647193465379368391483184377931650458220024135281949839125028584034271936363428036157535379545141863364595812855445273181538441619699308115639091888274700010919639343511269939589070821674927355044202335439115967016467605929292622756090209761870661364918186898613333301158116159634576628151083050995145464714549167948807955447028779174989994665204893334694588624247984534301473313071462011774563849211668332725565241141954732080640986917187749030567874240998956756802106451055681780725756014188540314249548252596482318733742862893521594400838078924720936881966275467351150290320336751651424271008605467404734481438059276617567520463053045061906855615939925643453405492986268030183607267334502586682041720573576843942481423291127295836115589261876028088579181682766129837489648765492273463569632218443588791691726470863759303564818390379934747615281190396560960586993924546229249093310925773726828780376999820842258104289515581692818832667141843443120502884482427695863064160150676081577123975418290623181535543029588813843977524188239514490371294063754050007621668290323669677920231799680476865349066883830456138777847437496105730152368769332411765835667138051362784410372146553285558123731634338444024980638634580267526110670456880913141172841113150589451383903441665084710490434430137074173324705442764602144813518748078131970870956190986120624500170932667016790760528308889300471528186113330548168582547329664446552134848221146682669934230507678260476842148496862968689264727805817645415387797895910028919458080855709802289691088733471693995680336401535217103960404947732089680529258504116729387748878359801294683834904187438767769103392875302928324977249877506817580979374842149921791770244198314999531784723608304427474202266144984631002075922448569570067645433742733151875815047568938629207483198581787577586434507738522784126478569673361970463606749663587118038917111039598325410454808146254728095977783217342458366422477003074782403681332966322552581291641529698744436221698633011194032607267848431299332422439074699686981716367486672909984328323886262298818724015415922882751791218309595532998331593980459769926702259245011231155794376880033925356397847720286275687141182789821657814595703071854712095445771932293960781209933576693952543531324934746485248090986245161634185116342173243588466056315883142745028196371193703652421553820581953604851348062629470493064060602194148935777351984205135677124365440179099506688534007835665550136795877482657120242459231344879566598942741691335510458763811377880358335789322168924838950679169104319128232841469412544554551758426936731355850862094120279893511300109752184440129198882102776754309865959731852745999869479237103260846577521226308179398782218899578953973117756660950458755664678110532065302171547952534393667180260077647098439832102292710152778122161312423077610201633304153233585903561193711078395319906528432330799265542630030847232598257398480757938578737698724591899927798409642895425932537743936975050164851898170352572394975228725961965808491474282790432723272592847482388740717894794967815202386558444515853882727943074562302111833942249727476481389992580237432590942027372123165513503500545827370701800055294284361392506575058023563552939415590432670117721397932153360824660087815059956371366339562885589938645973855855576184455425719567478135250213631379569009216946750039641338706481746000034234896128936885954272524696107034821280778851242627538696744808279113619200312713721180902368030021352162244832036029443722280657670321672100320706298143902813513230120182564484428571620108452265242622162812377666026488614166829507845847510712443907106656657930249450742929348082192130325584688278353771041043086824764705698787129571746746460346843747540921274021416490547451350264565735394095540564583821280538100180176643292694513842023370372125524460064258872083959877243836039083467057988271702579647092568306950060891193136125751250152896238520654881605351463601035555599182836409583661193084274857366497198264432997710185919037688376286297231589682358229245734694316823325647222754745822127235485485482698811165177263438116768266435336416000112748381336535270731030194782656247494762230594876759315503404672523114634420275966619298236652755281881246074823076552329043418072402634978708839705699739695646665348940630659707628307267679136430262007926386731683523218517812619963581779048174008629929660579282478213123280054418054357736182161389025482473481973250248612851985058612162859640479789567430081108586444211768232233469361245488087206996523694214555515904409506437713602655733114052204492682196599294873746631394101639685059692409575155862316211053467472259434187710829002114080199070077917435750663011677472801309100430822033952381885997389691262471165068036163097317306971653981517078968920091730303672455547537496034134573888136590383481499295432908700340433909317220824921291313932204885490883634238616616873126302695225471295799367723004406811833266393119934294357986538551066696965917776900082702091176590044138721700891098156528978594070154341860161604266283089596249350970919398218382248368576186786640429720516997075137426049109643210869842576299431716926264752761208554396366061056924981031002676695328348478415317471082738934207443439445490432279267369804760453197046216725749520641436521116842353842155249319614471511025704356545698215908167515644160127293220362149381835221357457917688096169959444183639814239443494989791158419638051216579073787250776938065841994931592422872605608216476330683389514367284988932579601710688128517420383043777744344226752315796398110385114376689124647053241407955211910804418076329348817892305533616428402799148465548313579733230257587630234215250626299918113436783473044067155539822427253363142474445820328559576898871428902597068013499377809531784038398639972728954084675931782527891799400692066180496110394716320199615482614439006233620159160687960273173928924538112360495763068669918183188490701890222149921358651786846915430308020119234633848671854741564628221473171989234310159162731566716673498064690669948320537764033731758922607119459134466756001918424854185177705120992718629194756969857561047283224314344979144541898286127694759281907973332682077874999236729108909037072533811609625059529268847912496150214495869093141268594553074626365493640843626113577850667620785989432515133202061558813773199981810754984733185684587935236371806984697368196677342081699894725403610522388204798793186039192040048855367661200389164205540439285061196418889122032862905427609406559028346074654880128651370605029783411493809647801608256980047508881417763158118794581483169153762028548634837069854598476403446249607314412152991379374111020993870221936761483751294492826015360866427145148844043276767915726311728043563348897748476833299129953875028235925885944429216639374880491800253170926689249858180191737834623358494707816599422761124980690725453031873776786278372234782503255887931776136401573087217400216481222433230833315496571523652233026495942791452993984340667231346762845438132511875165299210934558350876627255199068998894747159157316989014081939737547420069016175938698231226483313041033068056449437042416630715052130725324191096038054757477919024986562183973109125432433951401454459724760814943385178256633505529647021676942466248209723049202800443022752876435359544545066789822028092326708450009799348503735822405278929332067349691089102000796550036005233284775067288951036139732523566244553865226627660328086067876800618858118670190907720975200865888406758578231005578933670266865237013508005547533374713753273237583299093405420954486841394632867036377918258249024336636641049215530176380598274447449001642272613906086695626213649550166521826226197733573400829824410980888333888485566641150896515349196943056723535458978661099407510869880252458803763213334050503682720698619922181705474224765352270421245460800685427717097212363918858079779578709218378895212675284525973468377865536757068939280262779006029124829211403906924459202801561739005317954371592984429624720963323710602221501683526462117595566282962566623636234153757167592612773758653225678541934348848628640587768462602592819416178550043598861601637245873032688480056706637968255839894894495714014385708283886651184779786500080197698305084559622328516807396371459722363193675013385896412433365526379779335999468003408314618046796826575044219766885429455585141345992135000328004555373891795383392051176326313986387935206437403088825314658230454299299526328222661655119051491187119331142984929806348275812865791901321796383626955655406209496547975577279341295024402129756658267307794304647284006653642812285526214946017550796062738427530783366018614040315104783680899911546026969042916368097251773866812913500077685946615523433418581999622331195123490652970735299328144004083038434076983359337354659727865907399616794086214236862702861238201659919591750473683025826094996065063380052321524960673918302243787945056897515254541846943169431960445816244434896700278670518454215548227073323050679434654738491154310030759386899401687914083467272036584671180218450549599233573347292960418340011022434171293922402391162479886709676492239385491623522102325095153973900471244192895424250303485482107602198013078615078696361209748815426536387048500402985015215006247514265082761423964995026709430895724742273929740715367258304027480604591421806470166664132353142185555625394984125470945952995510994065916186296603611046167207795212950412391900138239827698704109605656303980262275589225642250589243986926415721354197496439718192683433704035683593970341288770546090828842884712964157662590459244067188187942879918533825293273635834397184815378618646245051357670039041268203165015924462164800877373359609361148662366550052874087997056015303330404237238154499136038724065304978743059777513711774755507773291022473843369777543100937146209447622224801095548982377669838676498320646393086920381163262096049947053593379478312177741112467821593056252028482873264791310736519624879140617246259478508066554549419243045975590149331253341754786134429418011478589030571030361989725678563715708165720590040706378739271390443113441189926582119866984386466370932491834550450712564584250524448912184587707493251369441662072434670467399262185508458335864230898240575245066801485458749823577488933932830348500110111390152874800640920994145185696849103983355491825829693870627290952633067166689698810521246420953034954085545394784017321960453764322158315506708725442814865157667652197712448272460454204727247934272108112875196737742027266799891736308910258406984689783085732505457345314479533045812286168467079607592767286978141980840551932214731352812308137965235401118518426299706733129555043474530614113981444128529447773442714491611506387037324688749315038268100510012242345870918172273640263066586049448871053147606288394276865747057187930039387428868230884090328249327408977892661702467514234919574034988710526846685232279432919707153641419861703940082392053047219244110767142924101769198389694537489673268416607242750054806711915361551382650141291904551491604947690380641507908791734427053923597224030967049854099503303747877300368552118473301282951718298224420715545943276025246914427945016488695051857138504810875797755055474113124858606919669318820410327557352898643129262849373138800791934801435087634878705281062626644117708610249583453157927692864283114760184283857450205927063625710686552111773206690156565555695283854992826867329005618357401697866969938161132852610225422734285738588920440534976808662045556937847617319947282672679220059222004852524197045358041129092737073463698371123626886828588646289606240223403805316027026459343323766424613509259473504527609869220584536034624353041215694824762868952544473315203078434745304003273929607074223956729555424753117907322458296357915002930398899957581003218803479811769690546382881402108239471801865077668129475644755828715173745769287460850404883300318931033078026292343226296521900744824703473992317228683915244588332783045868182753684051035703606427722382172322995944621705228383967719312340461658217657811299561805002140482862722767820427934770890815218519231679239739961815981486732180674578941561286313508161015353092587915889589650993238867192750075318533295174010453921810297448495935758717198018091565028925486163852975211868255601660293824771045689151456161344029028037534584321075418773532109619771515161730898417104553588002015157947288944744141605310159846198288028931901433655601608520339320636659456729313229293309996260197235239916467128080165739667723273197276529529747988110979894938478915611417328108340805755871702886883456763169325101100939673241150968243955743748810948733403097278591489616946411275601138970670254012616978035436573265637858097329153795784925741084863833588257397290974898218320726568017874967255180158306927486076219984808796041036721788089679982614766759135174174378311839548317091089275173724828458290066033991992067023814607458351584340245608783080326814367422173978656681297040012303964355633904430268947360104146682562801260455220775254047593997561409154580124873797601093104866679371138278828070664006428982142619961303699428573938884313351701310296813879283379190540361423090716171996246744744263281981907133766310786463252782527348393423850001671526858346789342048781927638963295214215800263493412906669034426847037318328713721785377923451027014206544261584338521724869491148330302570784209241216782112405539092805886150983484956416491688757839777823245551284938429663559200850382715538949667404816707896148437884274946514178028552614196809425378816248309852763759860691931789593517631548217228363323704558773711276463717192924534582647795677816011611676061608514191592673403806954814613447664198835200010842448961881540529003821529906484915053722200562060727664975679963191020701440735619732688700260113837602156651691262324634402194134539990415773421415727107291195058027192606491366279521767388717782400934175330550029133206218773361131304512844880898827108888178005009487143890230276752989433290761496162243034034587093063461046500641454084417336320846095369424685874158464315235438043410346590757994318011136749849141439414077816828254743479798988475522978230657176631180671747210556205311019340144530470236323703997039561112854869744793488814389853753403325028111093812660965057374006161266732093181910735184732106309368348885852091486003854823514959191656772381310217009120618105741453342990460039408543889568930105770181195020233869590935714596153969792024029277969676221914286659954638734286501696174991339679671256772644297566964185637729806040984510925506899986287223307663509903763929129038746800656325483460953446386828876065655133107049013120810271277399809620243721316201508654948974396118409699014228286686371221014625513415955227601777025886442276135329317992615726143377124511465877977586955065312018633092447860338448317158188329939496816326785114687051630763183253019719045434219961852215465766721816297756439543684333525723360617268981236832157464587354075746182549466321249019628301372243139109055814970267850599308292755466018368994776656239619139448023607896319031856494339980089225835389448825267821240512209474514142774247638181074625926939906728072510208828779140306775409220007705945381736692872474433190551385408370582895356662030233809121947134759795558387140679574533768368536935773459329682191143611859261092463621985813951523347398793558288289687968163397369725616329744295503890660183422085044480605760803618072158615160851489285782614658975235965230393601737347891369684968440103011463063754133489866007577264373574416018859362468796764501245819471722751303710290383940972378279327780509174971705498564031250370606786204418029226819965748076411321607482782515921750061776924246249365704846026882526823401722643637326887899558994393649465649834049315470651901757247051521284709993819188258333383279571601598223824630692211937315781200608767046635876156235529077094007439774339571335558761186414319984167615023268083215711306513814306788663806572038110090848158348358860279989554805664941958373890425059108259678112092752000456223882547266105042060132003607589582856023303807186588293958587852825141668974075513955867264231072819605420214497074438015588681356638524801168468294928763327453831952870245293858854737840891149897479478546820638086797167835161828364213386252536901762276022926356023426766149543553775465304881744986567696671443843055669692887302400628251963711615325573021487745936258940696676865299926672041885709294090811426774394568575699271318569934652677986691409924651684358016620337889876901760213219470657230839321843083118358141935481377535696822903328246641596573726452682882035107522550253876565977089245630115105781354962508523174567590549778204665493328704403693278446138725941443561348695774631946673210710010807150594159214736768714607862402370071928144880420042140560209661264414261524015763542937261589276511951823148364383922534726522007535570126379261103322876350569606924263858631953618071406283463756970798238022190237888814682373530973854455287464426609184084560071150630819978685252454776461768883584525975788010008737623236472512120343329743888774181596264002067087721203280804648780954014344586296137659787386508475004128052251998264424286117241812225209280800830658875816637357945670108989583067420889760625471819621674869247465462675528253824554549680614516415700909461891044080549861124686999512848883337852516035306738463671896020574996907146628015240187819354252728385236054159665823134789026898616623474067776424987077479483475689848453064335979387318568891513322741286472593674487881053854104982042018939493286086933429727755036660582089104738888261932595836317079982554684711741090143994490979122442207120035548975036514232976400320386246144289806742468053639311448217497941541005732166176928488857599159200304032338985003179494271786005719444627454288617286344467547341748602126064050311788766670792305898970753657795890644635035348909651272238885706189691058563905896442849476279326207344324524297493424531517782273702264399554786662862493825197355482365480914533364381001476495236287816800766889788092919957372337585665013849989339312806162468817127563744890863345381874246015361738210943703807713142023862098528352574339925351699340233599958875942414906315556950544950218025368333261955027481359969601832976456181603207930214501730628744313354161783970554517871927330056316387640753000132902225730654300607949759769135511281446046064316654079603596839059199684498114820731296746134312111546842098396569967029455744693734543397464133003311876450663022311475269624566904068671735006846687264460041769698542060787771944352578031761305453729794968329471318865880897923491632609261190338789539548572948271047475138820957264694353169575847832366601828498058304697499580053291114086656568383501550877535789099653762301386482714552002914729518402874803539162310751965723535875691170702624118707202154220406239586989592871273494717590697278779025289260590652530424157468650092153364639025048675727189687364305055495569366180848294050821395676929820825642293983860011936364761578438455445256442941489662043938326345240335025988159711046583973667925970076743846141707916001031567760441465617694455965114324178128731206142459878497292300871322539586728906359152238709675733975650104290128568736201080222247860788737748436995023772379897166414650216153636243744992812333889108838910883310045275798515202682065234759379409926919207181256214044706090682002774797607417260029207899482143542783574255636137094786024928119891611153665369734850568665466568088491365140407347387708897284920546792056784777683379988834442041796044422867896243763674357126846027281073009074757072018215866842018269218389066939040998575394316993737781382023801462158570310865704127312102658490712411943356476850451882551741578008191735222373332479817011586488242885856665786578951602699255397244161503696021596206020668248562157972142716235156991463545076152252244537550854646774434674747985951372561343851862682128937435628210506477817745959436675462704257093869528234935479359725255496786946307017358243969909135619744698019875642091982658743154613861534835956013098723892791338015441512173156152674571200857939512464679807490508674145027968205787407452593511152486920254231435029365659332801913322822207694785456898688841268119290261227777805599542001957086717411008987369728043063077254953551153122453450692316274440568583794678827253557253603747364662611808321992577429228692232793287016872088733751449542749474259863685259577418300138685815394146041676052871512071864958639072756659598816105630036075616287456246326133859459299040767704932486981182245359679111591292580486999292834180507793436425546378779023158761845895103266616818748341273782475866547724832931119012467704142284791654251037795512337743355973400077364934878391805031173181678622440828516806995259838071554202965655885162528845933626540512778864507140735667458127952008247084281644390440812662574819074291366222372464194820661256920185015952925630344648247169463091621684390182442035056014034460869871588782908380355086596884436172881394114199930306938610967474108234006602763663280831613607162730313548687805414279678798231146378730644239923940651190687002636486236881867600962847213714762001058611009863480427620465479645375855711957302210683717922503850332800434815068780940065326758185222890549510543311453043963194246779851970115880373460704408857348680379260497706180327752418821630965600962399481007229966290058510041337290836969627000640090285117308911056945225549267530173784055512539968431450723009305368462964033567645184447767062687199314141732010435490539434994010905026294227375764585803027480177253957335898287759554843270472043798052567200648289072416872825524980872867757647427669034430890212826420116691908203208555109675232046391323046043032202319588093806417901428171043765355100590919679038727110141107314407687199072306631258869495441166479996455079198426448339795054318671958955823557549233429151684043154314329849571085937739722675381595607840638640533815640133959749289192723570669039464704191118583543389755038047366378239471665050898809608045847957334472110011071711101753444098995739839411307478724858551479975414132809096125629709136159856647427819776805647532973091609048328224743912890902915492989993556342248093812974324313060054946567855740966221541905053978776548198818535936583162873762090535267363395205798534312567756488514434268609341072006866197207449373691395872274414049488839430707142718591303692178755662112686547322868435292650079752545171219665817376327054411053066355669824927957844819739252958800960823059743819448936429810684312214338725435926531337542644806240251554740384127226124664320302213488185702572011376540821162503421584061682381756622836145486132846660413049560925959633362949348854011966795516372280639693457877209756890549328217490428420978124030757886081004425899310508963032340967443222955780488616336517608185033741542424871421637342705049618500367909175956707209106261668060400412796697454002238526510965190251909140464826089445158708300916057211405073527161522175185781023507276626164483908726377545035743789450513383908851433784577540935040662670890305401780424040780542480156510004562025933236257845967495215419637493569465167655977385205809482151573522347479555003777812612548767714719282022365451863097819613529545086498008564861037841736976528190152262113795049353695716829387420573845591368870554997247089939194072136259122528138852105160053528314811634134662837569798065426041465246719601826695834278654108869827052408176524391043135638442349833275360021074888104651092739243379431605513999806849229603411320366581288256767262487397209003372583169258167857496628598945724715134379533373786049561499801778088146182595287723839216701403926570042823950302206890198021987610303322102023220763749666743201331069164759398777496187905228821070546687787502152841915203418797877638868765220657570608032324932068323332625491053310241283511666066577745253000194794531902826500333221086212207973592457222775893924469379992263833800845532257918290221458878986592412129366690236954542551678736987068510032143832572194338121438383619386065431198122419249447973977222862551755962329061176788536682054951935513597266906077958143559257718247888177256327331401128161126283791255776802970830134771602706925458316388267707489522833728781329179258204382383641026240678293069328592017715233843586296717505994400169406168447503970521616756816193618578224842151002471880966836732415547527189929750169249552684266237313798417449771712504488280215190133226411155097726942184986199688705642678475161205681660622939698526746375035403710850577513821419894111258409042000281328187823007544442949377074396365929175829861761372436432080005899534581327957339440980886701778195907169825469553006585594815112058491820331685803542400837077856394864164937846396580531161190753753563014320353385430548909900038578371572055818873207691615923880894408762221884007041138166832560815616904227316954671300799731537154456866720280649630081918911039934185566431822875382334354024064799313131512233168573142733825468915730882316377118273253735305074864776908787591547148472513938203729995908901428156496187485284808874386661127374825740596816212100399959187953024260023558483301207477744240253207978282733158180708755754576649832040330526691373957002185500298397162620695543615471555319415522965733284451673657376634571696300338663439367302366401548462908034819464313432761802560501677531683435611559877214081306331315675288772604000306733208605241286900128284380937396411584365209099506951574680609903458242549614671767229190292087185632399699519233595414258625641273000288438844439079593741851304083460832531605103086744127316623757637059988099451904569654327134319999667067547111122085247590745903842963890329695521035167306322916148858236560820096979313635713502215746247032885613215112712879925946318041064120235867642197534523594014172824526039735363187000257473058120959427118304023270072216903609293002834636095791383405338111797352409744606324667560738406382219548709653170122460374507601549724100894136455405826935901318347035337488061599693860254076861708350247333507120073115893170233435809966393269368650835240666377696118216943453676362220613794965168427997184924230852404335119411401626240254229668674116181530282612751956719977385055959399405729411072831365792065653446036302956109656263562156822420388000139547695581728119389336673166064424669384096606007140267273289332078271912161698294715554726449144927386318180773106294960215813009267387320564992698692389886910286915844107012806310718136913062881974253969697345652465260144576622491556582767355208126227306117498889968850620429089844835279137329808274884837096068910897787750155392094376167442652343309793915686890589807511829541251166332420853338139423761024709913058645403264626548886084268032866873453157755687676843251204439446387713366559986296953486683396146096298690216485599780136408108650788678540010239733486145938926736826731375351242613171984978766338283747940368847631666360694192992973364332183008298939776413519322569894009844543546828780281723427262420783210937557840151276823342849269784654054049585319585535778151884507865066490584349078888018514746928806409279219649344336386035997647876349510869983497559299223687900162434428915869610803509545902078761120431170540063566876092935123822274513650788871021629625307902199254715230027312828432922500446852455032021324142261053930091708291120365770805978157072663006525268317300446161637283918506968492086457782825486806912199820506404276106400051113092102061593244197246637449542784624127704534287865223693089615671933384831901867997875301658194800372396519913784817395199896350685165535099634628401016726390918027752656490881088963245779153524363651490827699137224601925893249472023536463968074495103702300947258960962944094830969129951024418949974977771796310039987397224102507982592017296231888200596483118339219941571414988161089836640217943535548845231139423739997660891483024243701573721285871736268883236092432904015763913215239401586429200291724531084024250235546758718687430207104802485800385927292937324281260250004873219601818189543321950640065365640771557878952434628633371031016650550323659007129168915033146596195104339831651069946176676523236355605125482280826660113296982867244459747573574662069049958923511630390520689260316841226662206078642676135863579993878471657055062909226368765425884043429034127513320440766102013915687782717081959581426211209770579680108466531623520421022379745965879827088622281467108892232436037547700910383449579519718852339633816376437041049392783615230144371143733776974585396708730422554980984183198836306051480333737011342152843715994799823461815496170770555426904891516939253887200782252762720576397023700496383486644173686102521221287144925305646921438599047369314427584303916391651201422576807436160672495167227314282125323666372491683607681849230856061755829366445722062760336016856866540866838677096676898229501722380599853531144323140079091936694467945891054963920214716699191274955653867775567033300303903711178050022123651538507753854307107202033326584669811875047486648642409811839458849341720020620170650613787737809916070776703345755350221575538452661115502644645094354741849066478091684472198312414334762702186156386998038677250207513079857200467983386510388261079526297349383718434840666967328573663498081467219321983330079128895527464207561631312948253384017941085952912466527648690007023788387227546511719104041464277140421361364914155926581051193355262495221072522205773916721857022475995410623751366877856533874163744599028746350730983442290693353824819667599939635866985562143981104805106878367248201550127370684017751640313385339158769641952675347196580059056015784902885377793700240478336617184034164919388048515354444295939624388698556894180946930793554219469452517335817761637511496006576329958049597804130804561391576552643974477336175588599495844751227762048768703377049230567946633873740566794806103798873422513592837421102060689179335615813868821162064067589353087244132838178898796824300709500129814837860144291414152940795409100899864521331063401248046642216399944572429251543184985098580095432376957908968735512942532806961987713061356003546342555542577931005375762366071315436222894231095901645681540221351048684426184365443921155959281546097377134215187157134725902964915642837126016369953134954286574527371343612533159391555010757477265239681998854637538474364279706069556705344578074254036961144194016797609712750988027120661477956682119061242910289238560060365619395312069124623148366684483900206598474607472957328636496940046208744654185271760467745410493461537209438753785454133096546796717129016639151273901795370320152540509075635326469727777698080803231414589418193925295710572649839034678350700634233587034063166144486411653859313671936096547129537206907029484263290815208192842901496217528083517025373340795864229947349031126820348486311052928813527267225113306205901832348600165849324264948865863731127317926574081518450096134162963749704119376172715482051191652190084255451739533389652475599038756372807324117393744640304265619836619530460022564950056086307702802934905810788457807846923193370864619468945409012094307783433042167365260268320549068568136440011365607835463970204077204931750251584419325043521360211092231496428592550493740254336049002342586060151235257022119739121685372533882426064854611012844836605708882857898767669190276431945028589121637166083688233242034036566037237067662618696137004823374796270540610031509693988627890549051634957159748202378775876415537947497637413151801835165786495966477141470534050616708958491691236387670721249981843317923967264921848271761230856372961597382464084135882250888431996590274281139995370867907726873116725021194056276736896778614538305515367626588338245975441715023237253059061529880452411830682564692875477542302820077577754990219282169154900000544581861334255570808938667398368272453379978269963105586541516274616473370327680672659216120043688994880325091908251846075219477563176684349537637373153007590517300430558771271991404879588032837286059069061243487160071538917899912657649670604526900438900833306553661709007668456872882572408645201763993729094579940627425360609805193470761270193380263489611086877509252154467832448436832219778001904360381034782423909178807641979819344350806732152050202401653933174225737398207492533186692879397662615137485951113664372918588156534454533139013900889597323631693330255770267311581142028785060774786280159412599179616640535174960017720417151250410062910245449450747651939371583561565244002248082914980257458030649999373308183323601008183966184032942553828388965159977588935994715398728915670496814668947803132832488776274862766767901288426234354976528821907898856096892058782693597773590070642033166326619926578425853266159461012243390625189386323199622332446425297746237061674905610109736142947978854279875374344848938782735985061824125727332456921136235714966561776150417070044698023982439208023705233448742800624109679723140338817141789242874171695695617011810250305607543529002135287000800298706080029753003131670640370949052400627480969756803910870435993209177538151275234400781525747659997773744448803166032025357436190871046714823338445282590644442335783079208095547815026678282867446568085307376702473761719198338599166628268394973360978489829091329793890603419001886842194958707794969381419337062504167998571192860871962468103258492310533752581754293891705513645146778887211713691782227386080983274295021584687305537574636514087535073037501112695952925787900857127741440667196663493435888964031198260242284989980654745957348944946648897758018807633276013064949660785756099278551775021624235546691238026443487165259998397630598725887532326169874546981846415162511787030354189109280562657508825897006466443954775065525635894462063680936522779786606626068157787278083225424258925871575321070635224368942950757266996973236982190080454521409868253626718678401504059996359941671457893370790658715924166037405436674461613665423259598245649604137331917529468808656311268274029403904940599190586767408718525635547574775850251318025626043369549447377119670924512976249840013678029294565409087614228982945494164001275892153312976971899026770024260893682836956714435889172130135451321578806418436251545409072376565084096888203527972852316825951853047394901986377437911336564728545112414382684360009091078722977347454325799455957338507450699317514056952365078240485064737100717863891038391301919550831731075948803862140928897833852171495898937650893518702090271764538388972718425693056199603027107624595758434506039644479340070900996586697851753825195818805083688650564475665143763843210124143153154302183909076271199578909090473842153484476556459199711388046906021330394764292754957196272817129661517586993286452745891728934076141815765211341175966449750450814309320131630006690555547009661629800493314698589745510954437821935573490275165115045497712436241341561619416837051087050254183113145350163117556892429247404266151940534713037357023286991807645834438330800770530354983659286766269935995970797550660866805149804000487127859357584560583657031148397681878903150111422933219148068675148831139478854576824315801323238867714624985881207138136249391633597499148040709163344692732822405510960677419893098723464859280744209392288453668796612630805624148891062695977680940073795026887376984259528449325116720949532423374617771924111387387137466421380468944435178263407180687618374436064027019311208285439270763984847762686737060022639384614700043351423901629937641317305793585835726593134375215594196842011453337003918216300002125131177104620627398300490371251235041950703125181598325603818100406932638382080329269931240621960050293809767001546274384733807470946625201422270874267005540819430599381051121391956136496361193390218011682830724927636124471498122436874915566647634975043469273203577670366675371068426626675770353399484610052729892490024767718157315244339689579382152104016267119408465336345033443806868610012223851066073936094216297187152698120043216601015205056999068275944816172011599340420489523464860184137925390599246847700010426628853651984969627323141135864992915177250195229361006708735700183075527325851198376953357892310115873744116398061733979501365321306861137418122593333476400591275363322853528554283914535022228293406440534053301296193669456759638254507830889310294810907286862537626171401021170627687063412833822190541356650714488434206201251567380314385538793902938459895214035040068788066426927863521996923350296134153157612512193663523228126963118390522707832196480036460803364477638103328264629535970114284625010147728178623607976693376690964342891822164769500741290714270126404455940143037516631337947833611562647032127028036250771652334980873100778992971162579134807155016699322264292574207751880524768771303122691643727286620781365299950813669414117094416890576207941194624057374318121498395388366793607311972468189258997034569321893779363290135323124354645167585785220906953509894031215917016636700227793785340343419439260394081195756607526960636377927179321868717194713711262152337792068020870090549689400758691052644198568243662176638770886458937893929612342233535098618063373201547284641910635455774023720516527737861842319516247303920498765644260739164955859760463403543261270447302011157281423975868795587290270368590583088621013176480543178194712041309496697056023430214497049508873421752445014634573776243270360459673504089899291003427673389923517256806416732603819823657244038356152405009350001330506763381534649060739356786318064994087885234412230232684474633581216649750556720077042391928633045273105661120814073429735916064958551747127422740335348274792640290118464379721160132177869624152845928298106727037885229283225548347881883229574840541998818927095304846677130277863746253460366792106943706086133520040839769695905744266337652862431297082773336748604988663221528793322729376350140257176706190556500895189638762371422748452830969193527651855744567614435616656514072428389442946210292418320626077659178324151031188914598322195025843157402648757707172389546762955430440167905522089277916032279629934563735082685081316723211769693821672565639527257651546813169693506716838570994846108919892838262617819646569891870540825177336875886872534787302732886948132725885629954746371872169611675977943705154894153740624293803764573544146601864691562117527731274622988916756890104059097610601614711484397156390656437556092803290252452123030550579165618260105600140478181948287774185865638986789099310306527291753192977390898415022484419927832684681483380178185683601170574030618056345096776023432444498716160810612770673074158247025053984632031145837005109695355071386827522787512281192302333094494311754463784342569094884769669406245074272638630254577410915979081725996707997028093526372584366375390908630239365530329009762249982041515452103020968933317926356916454668916166320992207947422528572726530488630536837794006524622198183142931696401781806690489761956498463860565230487153989795346135849427469507132167285128532909198574491516163961914557028629906769004842141609675615498147611434958269424706689962617876202313747333094007294531801948691156445725717173901346124931317823089033035173879473374613532217777497944610457439251319483604963723236606251242635454429382763382139815505838329646438212209014899496592241934287354080155430527901409491691853186519458793263523287771585662376769882624141638974276392632515423041742475969076964470764935332157246139196267449453698661428975475823757740134287437881124933806632296695346910273494860759137664407449923209630001454412014027114044064701903154045934216192900075205261428914871147567501314290340175468468630800842308905894688068323269464989141451866935982707555617359015698501294276974455319049375590762474240002936379802019198792398760545818765822806515866166869792435255866047544196826911653873768483886447800895598976549469642382257555775160441943591262166587334992362081995002219055358858104694216162120707434603774340850886610791789738498951495291996662570643332699346472025129903168897238101587604631092278816807974137218502397650767852624773433012580456489406722816639846769201402352104284401158709500528304541810956457465364055520051202612272544314789980715632413813801472469331400857006126244262972443530126564945581595700319499707199786252032818015058797534615125926556459588170367767529634794042226860072286105178115765938745033699586071033808224657128866202024693627752527083204216581684528059648722692837611010745938901954434543495796926981358411475278192795722667851865826195135111511015113458079807141754494649190112291705397855098530776550885343268904191165196150850493288816971293968040481311625393857652521227441452365105084968542970127148155135224565894508126188927262348425130315245540004283072045815658193427291696035837424091639689150628628377085532585047262520011772752797222686683154387222568483329453763175012792809355823908652722401486664626709116296836205400723822563414448721398785681635943208307407577925483466623191552148504158518393385312708873233721569836876241202641135100201266746362747224734759280079178913477795435562689471690311432751270776559356951291710690694691331317599999813117227725994396703290814890696273875029661194088045235069397056535790248007158736586780459360987657740148426499238859544816586253903604725545636016501025586507835071514628297975906577441720625956629486116336677689038020599698044322429620891086793599559871995907083913178755637583038346613276353676826708452705373873281258379556509496057836339349815547979531505947670591411606106664770257828595100622306789262481808055760792352171227448016705206166240847276320820110954096124454180139528654972023080892431233826293345443374201216863004268348955884521803279511182818661403601912516464323328112988241379684330335612358109044829597847248352055245586084191814399433150108741263573985700452189809860653871861596380961397611760296005483691019023738494511887032438025087976706364853916982236120602221996392259555879069218803265407972654487154094026196735798491119714970947271415807595645063743435703193503153196084595077101666571891101269027657515244642750278555575351347909616891249458477703734533153800141922378308740447971988251137346380496277404620404555714149073041849964071052154263794242072023402745291445605327037331643264345895183920933799539208657985141932422671678948664237398954868925903902675456641256836341663966749632843475076392969989349461709281843849408320033367196754733475969111643881579426792741006278025781652115246990395123681626082824885244877745803275433990859894709905934977415954963598811715653289298430747470851832056650493869982855029228494452682203723516841563039876050648185605619813394723198115872200726921452179334037652999654869520043775839657433939306759562859415467118951614553711290313119538970994574925961910825522943714065292798003349577578123830153753106901770435184612150433771130901291536746221802745105735632262953292869297776160181319178155170174038772401008214858645647866209395316859794549585096771429153183587716059537764238231535166090871463538325379559786719961232376785375633188862871197063368798546505706395209426093391092346636478665274774782935116464596252818398738750213030616443978764154858903093067011883251788996523182097965069781594635911197199119079408203342232642974947738395423008270845786836994485603971200765647406167877127514163655913292925663866212868755616713368361016854354744848037633754031369725091761360406210743428235983686713564003986200762604581161482720867369825164013582822171113619875066971773572946353019779339076471653390506398113902264901539947239517662167617142014901166049754292497148535499502112107225859252099804572429825696936811986328750375526707155739329676091179067687300976023236489884950667478246213951552496929045833951326055829932938558826769362301826533643899723374736763889133805637378449689036352212308718671660688004598520653454750081964230849600420355875806865812798875864938471758459379029558689756080264504254612774703964775131335849831679346639171063684335504765796768654146718407786674081637851293956294256243824918622724186046911158292590437763747722371985557885219267107536549393191239061736912265252476160332277330025855305680137050855950022832957820118307051049524483978231340392182833458893510613537548700252007873321260631441590995658996313787402198875104483523889063424817592031862979370994263602629642624565774314773966385220327133762777708403254757182520010643570761584378935283842710591677974049819267352991325694359546716253315108477447658672623509792386282986707361003307559807628638612780859006276801854618465245513289440346539302374084648063956792454126800064227017414241558679289813098436212426470712827143327148090304663935347817648955414079298677022655441846084930392015308169223504862708259252902620444550226412149494134883817900238668796906791494832770398815160915730280863417103840697216353514167845150776459704033750893852686965514925269820042274307588545022802915746413686736647516287121373550373014355823699277855410772023169443016118520923783739777902926721527371029992373074768365379407954357456464389805358976329604906616660668562229329003601347603768371343557016530108696780064276291677081479362539879655372352437634814869071829953902495576989390574929214113684765355271179125322134479197184205228623233027885805749658921836103179520938670078998984128426589180026940916988182994802664051229448012046254284132986149815772213192351248730341114511737048807010436309268384879623977303956791669667815273000708562460622607260559203195540819406402851519373323005045617329708147760531293841928922562649941413675459212064972403037133354296060052938476940702734616137882142561437648281953776958524780822602813555168633324942063707221041548806338812264660722230023542511651145878972920003219976848972237996725621758577776464802856105755291540341052063082094904705242617374456520956668374193695963812007045383308951003005282508464094493296846635680565889892180485735239294788479465963500054599479647603512650860970654004110295180985980124535791939440907253802479857890123587900874864707710674277524988875174106873937309809584662922871691191766029703178022417594002993044837290044882142763223905664931087223724447669915997494576876706868454730084312646321745955348284542857362139145471362820941809942786266289039612547905104000222987120316313189590334985121515446611020074276708633155465544192518294253982535853147679961448212863298018293453149057901611889886820756569652785382071996819870438939026405055933598017993360266359250677675711911147823499573804292561446934679858522414125656270186524788316200593190108807237918536627013715499047156060397109434703411126198831744679037968426120350617442620697332027142528342279171044684733084836198269102221511949770908843109649275325940055500500774998237332919021845333911591481474996024928522996844530779895735876494905878130470900344428558881549156634044848231092545222659538137521741372380340392175466164855203937476566253345379563508159915096428547248756986122283025580421699790347855151389675184872474695389828721833786186444988927207719135508218198108432597616241872563075977802822556069236006103401927638555405386094508030317153206563852427449083788376597614007470960986171605939611575306892260353425920133223343632617383310685792931569387236741813730432927616926269130718955522485930003528821196844121558975292301988174268503567629245151269493493100614108327965934948733196398892967782783084998182964850286376013576616370453126404103130303309004242975314236221666593045574961998138175597640262239267211413523951341544861515641427126579126803306937014386127575993393202283773967927925490279027976033868624625781594949797420412705053722165182775086076728593663822625255692465746651191918907676655836056515779208602410273746297549454031868198799570826736138942906154468703282894999391487906810548606769242007609778784600484527558942456867790221221100032142403921702527526802251995496499534569905403912441289397771026470587354074552754987387996669220715229651343950635446702264308491346858079147419279118503546280018392881446365909119990954677986746621878393529523829083661136820361239510354084179298200865775258561380314700841623663165323432139658363318491632244396656033038576830769845076014842036289948696346826570428699670224270948343923002286245303226112157378012937062431968818613157111926388356131210620923016384499010877930315534004582797482255418975952408502627067457909593108257834639049178938767195062880826692195025281431086596988055399560957855545070942847177609721079862643130785239620639979941618264863750466230718372879429693327920013663408082059633972626987655397016370740597479486934740042972595493006100335258700697833540579744749849919634463586159329775996399708490698203423883621274235711081696538322596237895145085541324914223351161539182147239463085011075361785576169944481443010085953188644679022560064687796563892268773203827389088646230403407959116280032409173660058770932824861763611241164929523326647881290162261877646155289076532490089187234164241633203984646701071703727221177265312911848659255170376277824179321269031051336967343641675135952191813310294525124353071088865536076198327215423422954137306746546236488751964191442823345199547554027857885574739975861971759624035529497533010474022298183281422635916896935331266247347852988244119377398128471775601669860369727248417497139586285405527294783575264549422364541271003616364012997419243556051249011261585669192746163647242157468859512419807904051849428797349814902694379192588019761408639607432967824131273278435431862871546691756270664769970890599961573905381893905143690906266925981605575569598788123652146019679643994107533843326674828938551826113356328788897268540348691341815725836877533665421394142567991636151056176773615578195538971317007364417962526341910889068050282236798585308539822467042997247487281281637545651999013294333898455793873727236324440768403610871783256473913018276897087497099711281728460504023927675641590402812352713786034490698994642631933792647269425496929737425843050918398612336807543452215198383591167534040623555503974148090901840105059736846677703900509108900575099431575800003265335171243249646537403177975795170825044850541582954893918900690075437798272433197803544281113862189897845592760303346956753777657887383340974461783696551940769638411100139265508992328132130388792433933912512760547850265464858572163518213670127501367007766721206386965973216894702010736439719415830565124421350806663372076684787545701224807732263307554046198673218260140752493703126235853247250205107860339619757285356511008455630045273514860141134368290692617512775135701979147044266309100002727141044744801016028101750782349452000277882793448152067824068619752272545668548532903857893522949387031885832718013620352620798603416629998429272802783027909271676526343333681854120748140821907196420964336037108618411780196866891497517297980536303313058445255542736911543686994977446851483296664049945284080641422594235801042096448527861582350226892525929035093412369185970095560145402178541647717980802456772384391899965761118839238523975660534111452772454463478169533495172019200906643779495337193248646543223993269502561208391064364282107627287062029893263175034868805762935280958791748877933478364049223570971601069655105360199510402516581365879371861515072447664797561473583086092714189982033738027580774394682892152811826223817680418070783215789233744544902215832694304896989070960879626484260197127239877412077443277448428299989043072627936842442958833056038758080231321175259593708477660909519601978361207802067172940324507484720169960399020361404912097686277340334174922905585154382367006376290322680270078502134755562772689026371490596570826548640518312207230191443111554499308493454618275798735260813067101309074671145342104192250708500926646943942053412604324446319044359377950384378361259817672979589648911019477799872169718631710462684552285781930762411248879695152898917853846787272218130699696919781215140625882087814862032603374017530824239500536225207488297152797706280525026062062497787629591881955886204377337799788936978142051664225605385337732853931805055868249993607696716631541970514295385987865241161832794632062720724997438343363494484411612294275415882231405342449020130081419695466196548375956458624463375075658043196927031882810587850610724654692463801108800984628120295573028720745836097606776399409533118925264982101743882719397078481745392495970201473223061201252647452113657631859072221123752932288569273903569052678496510340361183145943560682619385802073442477957762538360000714823893874797186150125490696531537850515280517511279014488191206118400267577363002814424107009349936735328708733308209524836236270715338403836306785524419990915931701937634599651140199882584751318937166988585248694149004153175221818663325622593940374957233546170524507810458729937585396147843607520758239768466480416730545167815783573900010918774329725190452404581666334991606741330532037306714550460695874419891473464820416947369994611378224226330666440047580571672219143832454145782727816257815715348934219668378170583773986238087954446032676485914178352474540517532804553848180191870072274296776575934199460132863143859352159226639523154692006349718368899106416682443773441244393206224763892760863790177096359563838283475606202781937550293776335721781889458142067340179533225843382372709716137867738871803078072465594964393504494109530242493500401435293285042252352263738538251116720031355629510654500046048043209927387138451503613621270669885332385162341981911040273664341284690112205687807652991853788226384342534103776414581297890525961502538113034832955148509238185781806936252788745732481474153353449578086186281973616518689497586694812122863311131471892911383926252599172531259724932619107934472013311696435134876425494249453597105678336671507650302533800166828865325834765904211023886996966049360681184790195812398831602011497200153850229832423136562257486096931227759656604723660701775679661945869251712490338166386174384777978222051394888873504206592867415388292775118680360510517528874430281398981564741127980383685330668584242641010342471249938286232356717229682256349035169927073245244834929665806226492955256248809204796772339239053289791161375972335478727928359126498287958119356698846799082434579973773889556817600638506222818609118672766011871020905377376359318895904799046096194933660336748601853510237117806599548696915578458005554878735005387007408906576758358381441194078572484636826438211518696262811567707086698399175218726819011756336228943439312541527392923760502104617170371438803070902230837886669603406563962701338129063234356805168822432031808260158700930506002511542855463249624470610286697198974955913140221218632478947062262277659499932366752857647453865426403428291177141686096754449788554609424743772233265187489275228087995297286056754889007749043116739931035631736917012291419661489379493067843924668432008121942277515229960766094158592100596905223562542905643406666917801914628870415766391453857084224266857216872418008764078457781056820823215008510531066257085459627613287319135716106883987068635269312244350494285281984359522695199746045951808664967706779898072526094437393014583550847592971251735660271084028749900809715520179240467258028218625582995118933337376096138795864157034837261416981002651879086072498948481371727075838329151338389418192536801372832648487063268351943369235007191786837007034079832987622288929818186716540165094035975141436702687879928977247512350590065528841162811861673006462827032593449097098690692957896477587174066142593972388694655471112176677515053360700033131893027345859311772807926030041512583961627726942929831348338450533291840468969348009823050375509487332799733136318660265670950544550692005862003805146678025602743563383313286627792546038160662532457738962634280435118100574791141806626957944420456061476927653584569576750148771490724445079467553609065063469231833191137398401699093253635309823674824307875224754094130099330223837729654001729683519111538658128652672410498332190376748725660699656608643062578523283028410148646688292301722002094373384608384041172261435100012608574559369125335826939922758727958798321776342606344440922831838477496561093154213473702541365667516824301609861382713112088116928938987931261673760036135511855012717019511096609172551141583258144686076924836132614364744240976859027653437427664023638950824425406292648742110423048615420873215068650346814488155671413072754838922442051594806126115506514456973722008832967679302988995684835390071197563333947887164945529360608687449974699220260174074959475249586384817116480528281836957289132335524700045193664672677254190050943195584886099059801935379632262723303316817191591455962075770782725482833543401787005621673974562457819781591091299277261600561654383396651136297178048234723678769702450864699212371013293654324847462968205978438032238927127752007560745697859400897941144831211713870917901813495777244612144712918024037112970959118006842399267126296921132186065594477162265931909468535980797367685129667829726821033469535513129394483603141232729413291502666094987799565614367502220944070693218772960972869994928564419801125563866261085111571544225845411550428951484698193269848198650177915102012635752632083950177854758765766279611671696647755581227368867357035123132130123644559250261079086402283132887338355303377103899108849595114400945726496982570547578460360037496969304896487135655497972678202245809863993177109143148279358853227909924241181428472116650427374145837900500254514397435118125443900853519655251519991434737176615652949107528812544320581857440390595991325298807523095689580058281293859798886894834938730185897261399580180489020946221147007493955241427739875253270997060359465893747052636401412838972645181630683184143763770175393063343745748138195116280709329818018038504881831838665323250287623118952019602625706356007930140204200506169016699352584769786798239725900425983763138012740757021971304852075205952772242156851407594872617746632120104703055722687395040258527769029369508944595580770575435869115948908075518724248937916083330725263106835877935862807215230626169270747416544675378321373464950805121888624887032697598017432273993702027535182370270385273474951637736576149571164863007105554118139894559287471342446503759184044672635837833995606069259709018331052919382551799701515416191348727227599973490914350381383518017850227703330027431857778504580449141939104889133808987285993576936190891277179006310693334243880127876090490771170575140079277285675087791760578308064618772538866957240034453869316258655706602947259035334596879799546892920593431473547962710424816947521177425332480909633391332315519040605187736008171941424370357407337637564048287601501571340097529757937593379158461385132520421144537603038662887861028576473329398367015472044754984731125307846857654833419145667791541082114587587382077495595313710015423644907273062703478741627850716017898165300439881589884604339685882114878395910472544345956441533244230177019432181106128517835909532923522866272126217311015567333936856584567860647453703578137618717744761658586699082716162325615303622483609205716102322356729661430138672590991547022747879946511926924743843764961358874867060024862195594545939976190001968380879459548308966518728048666258806343494057342146679859584833037330659925013488145646232833231100616864769323302622872129841545518173966945876102039966169740740544551600310881878247312877726409626387181752804349915519219189628577640687999686342798677748808728188183065939563900010190709544003250485071369645247338569125508109234541971644261754486452435885983151637074756106949769179774719531414055448030660471725868659218281757739011477703841744279261364474509427525701372406858316974497293781419986721975519308533756510653967569178873131940686899946544250637210256790463721809069642216921506741792394404078972161834721152701874260341915027645160489518565043249110184859215731560854312115927077956184799541660430024449075960546490688201851619330565066760006572479946364623987216311511929300833947803179627875656344474823310701088083444909087838595364828017020055494808010163055902365695461336212543066770977310501711693948567506904425607263164353427708715307907228703345087770723952652216103290391701031288008857935898124059150616133459659644759595078088976567217389676473276606512256980454223926745615603379731173092398271666054976547526746261290517330118077315402322589309329944027109344509747102274295520785102926883537211384716607327594119406081017402674546332542247372257372818680703653117310434767511576290270052703270290890792032580996160314525617668692041739188114825277355723224389102032009363768069104726962074076317143347247251574503837435015791137294389705400614636029817231755797686834820108209865572479519531653028016555961429270351126982980871181113398494957967803683487229299702049935698144581322743000488679645061767654860610446002146138071086074913608087504705876385379179951647728150097388412119124932414613265733199817701596311193919124893527546285407038489872528162838831327421214335179250955881249074645220905908233371324503815830942061398160692722008371415306529294005211957715714054003076200410437906374664494834198621045416904075281211170824867726806441019672044906874634650583680782809816244083545700299121834017988896641366613349627892270514916506535366139401107965518585937643957910449819404105115984393915147776925423393764171245437954665913208370076932612702551449519137365301940767609423946423050699509107868225542410293320196180833762466429256748333023025654497423719125225012832584762063872686901500075406111004387066887999904629257205284449768092861601260506463817739329315346924413357336551068731195614540552685283090766392186303910858347639795499954840309093174286020752545589039195271085539711732553395501976386818266619450130897563720815805662722348670428968387002425994703128241058153359498239250779833049679602742745185029913003740833772946512426053682431251807434452624289960160249915667948787884731287476801202434479417546357401116348150322062727098426366431665029817669466846692353603402988108902182271335140449271625489114352375577137953316706169398739551525286677792801541721869130969776323755307656405272384374127586951251972243013522646095080602149511293440239671691064484930231016132437509612331378705041555793357201228590227711800813173367914700377547596055861898258021515084080677812660066412416495525923094367700743791826285243917756361664620652658207341906726559742662496057003235860565114210227696476201812387900828947051057928267456480586515090114789068978593807828125575689864484044426271492126461369560431970214134703194435014173776324523921310256639213119184281472821605430834940520821721590337456615706866104774080807963652007461338426245795530306781701397790129305808771158156028974587612899579543228137469382281977388052725657540462554856651288691963472273652790376189465909576248259600775965910789375724823345074791609310687781425992303827998396830039286297592253985448802202118139138088424341571421142988736136864441358776941911541370774671267405713255908584968179497871214642235967850899873801758330459160244355409208865298292804594014136874408154354454483058826577535227390444577048272239261276935073342820335739665382786166892754332672470396058832032130355591957661473837080845861317385767422626047647800503955693141004966216524123994211047923660363500872168314487836854151396275143913642816438704515003990695417536596908593178156050456449746207656342045431393677917595403490541344568144820639624261248508316466168081973886706636571573199993578156497528565079966070035023878276768400441836698053595521344387689101135800175830806587764596450065590106913784253482230896215738234190212742726489110031897234329555493801966738143421308151814743787888800451758326024225460987215104493022335017006468219480028366626033134165820398705880901560925872453896730787334250389069110827807377733065759387626669893604753906481341138782751600765288210963576297252814248738042140033210527716043250799377350086328755965339434193109981194610190894845668808290424479559970728139727250371248085349238773007207721532692008599219950805739508689000393339099006649187150451406546293850621843239972849689069850318075270904092646496535265332435088279817080455929280948376003122245766441946791653344520848176654130930450551298055697673582165216691887410668020203049340308845393082644818733100202731717768683599032155764416689551587261696985719696689613680400032662348235238542979729302227047715414226008440580610339186529128346480710576265082512449935808685949415468607299762820058175353910525947322764509369828475232791251062094822082276262808294059734119753372854947522045241951141392628004773330221073750573129206673523589367559931234641509400095712857854510939323798519918502036195094419976154951775257024761024109605472120524816401535062472076812876436085848333145723683496637561560583868728718050217111643119121296588383778032083176239329356825119651708787243895144801013872195211402413059610003601971669295322154485671475926813094633830425094858049485199718775753965845825523055918356944130637836303394001441216701725593173334843577023092459814953164096117758079208035690580301241618519472628521251213061171029379880629715318237162567426239611331966258843933596681174425637882943994092128024907090342759559554566547255492886749448741794679557008147464416449782641283955448574579945605516874137254032412014103219415624715254107759892637802535653074230794270964458525379448214132781705759310370375263591997241501523877688352219825522066572661992450444295775445623413543285685029804679115260016088581739489938521402445190453535171002488257276732126849214373986020139220106191804574130823168399995935144843953026892627765470195124206833824190004293738307015093122535840447604893464871919646615561338349744684285884100672487383897378065581363581002114088108774528918762082522798799997035545383965455951674443150539779615706348394893125599913304338204575470622611129425490866729535559050689587651091805823986888731332804447294544606215994314680035878595520827079800484305208476530816083261088729250180401183534267254266874262383380270278755870182465045715422503392224507267924323397367215410903281640426139724261932406252061023205450775475037524938577290966609183472678571563467762821918101776940577097924676525530825048819344644684667857379227604186656098988409741365945010704398599662048078577065093622540011224259299600402633842462110975056290439674185139736744567077240236850149264320365094557203336950722931618047439172289370166694676987309750120379615897609933443758819912684446427450526300882143435108515501156550399080582677263932896403677312014563361251520687927719956319367952112914921248772572018109076233545216930519457314986856055781535831075030900853986955953060277049618202499485445135031641564736081399082206649687466698909712675358750802924343351447237886963610316822765853950737957834803011159449421170269502826957001842327450414729514872943746356192014036719411829908769714159228507108371469207364963342490574831435943924662246751596429351124453386020369084878005467170348656601458201589978337079733930857823715229594038045553907331256803534017137599865732460612465400348214136454023042792293569490585563054001872832132207099435359326905814502892088685259510787557121355761643358598891015057047024316735543642330944605517536366017676856541859920697285500458137457273110788136783137299885685948652399485863606787632936748269640620646527333873241487703171679237221215610579883726196038494750769777033117018702249329001957971681493396374633544492775512829289525046622268060446084091200963013148715902747132615984164498673627587853218217775499611298499335334389798426936069652817514848803404694646980549456736667111913112578882431332729812844900769244988405400565469009493406992376239277927916375933647934482564318740071690614956154488978297243568278209725593499884124897508319040461301529067592248354575494724914086631426295265601506009498868277063769283784425641881463011335134607693763752901426357776009538727016929190751357244501279719907403303476981777685881800431256946205992460695797654654537814821613723501580424592830802708846933640689939264327246853872693413114713771547441519440395947365400175466167082838081505468523727547786273652349267746013407794038123172887888999473623366129174453974388082617826023469576894337236087204785542015475181844565983268529583778276104235497693311369457130430933918697355689843230016132202643624584053695285290781352547717452759190345867682885210644600084699145347217691883036770245829435671797845136851474131320900776737424732579696035318290565486529976536702081074999792077104623695853033054608500391855422519475588975897506592873259616046704409817673546943100138362883938537735211080466846207275581045265691416378650947615542098258299837235256664549271925539032010332189633125100102658874026254529068537651372231874297340605631569709048110417682355823495123561500256048172529456898276971687336540621754718383630476477036811623409523095932147223238554610623485203025355019488602194278124446520681343373872604308443868364959661721211061040276648178490092604715118859511891876738531987500366245580101105805918856610498376222131908521339638203607337599718782288754265800162821318079734799287635305662516976265467022195149458612735490498341948677508352356449110769729237193942024179947260488701224421693659964272271811046267854644426760904135399905774236512202543067405287964652048849994225054827352609942996014263195035288863232827239218152359257086227835314651652456815786485424485772026464627726235242780202150316062214907695070280959579973589327467315401129398764675293027039434237092725752432522470614402625684947732330854519310513653718243911569976909290482404113854587359972545082393844668844238588313383633210761943211221756337022135924023526552657571582639759788891229724854469544668912229648513741375009269614093007142350559602440764572000619609274001127181859648816275535314051776780284787708419535626365679613212493787068682326519905264471671531952632390514147482523575677594826789442858772075304995075333088564269468616559747530618889972258159176646208110141032544761783038862424381737058677432162291439405616770813395181975340824135646837631320475877121381838845962636490785541784128428093067963834950483674233448294222088841636333369573809965080266773758958533957577812762490335487867166274999489902587313037473541024893053582445112131206675899887604155103859028139645322769323517419057903382451850387084298904845440834881696416431331650362593840801345893990424458198727703455980784630325513222848931678158083048559923300255020755340257358350722933463551928522751097339318939560410042577542617297515372639070550068397406635948695832687819270147998524362903985013935851929622449190474263589427436739192031377064355229584023151620069971937819208650185691611448747760735436554833127437924406592677602601536287376149372131519349607901327145506948986037761231159338794973537209292984154431140850490890750375702930654026269278978038587782484491503688312087803219170643780950609539319453450890646123478909602324942840845975106352051893742095189809289292151300140790275517822295486669264585999479825912504276827118874202392972220651208036630025825518771892246027512673272298032691613982689539383864501507115240439826735062040953572073830881270502704091235963030811687392790614460089724713419544437645757294107582119291193655201903642020806428835406608687235108791106277219112904778504932560876984796472156973100909779279436364505121120625017159123872403065529796531783886937115125014868648217626875598697471716376472873856795656059728319068190027156249575981866255191012204317353916547868974442537898681404319244655270000477376451473279260466714479289899938872104699665993296626951579217276913569421691033450355988837084981360491756303659858776145426225674353064255897592723630514353181006968163109282484877190707760929550393127690465717508024066383017794836151630326876332032365230439742538243783498729073725481137026308208656006140201204759555228340903678906511478116233715746356764269657503687398631109926486848266269353398508753363232001215053275819752833578666379562878919309808450867288988088277357462725131620940360405156818783973575142299896630204398994723647929507355285558068584747145030296817987969988616984894454648869099708772512555514258299471478207866966401075030166295301549824455555604604395862226225755358007857229995910349424027023737272032394146744381107973797348976543896672621283859771098443261759971877358928189679246325611649603755079898377713195881444835718790887285967214238713823926361125813029726934154573401812357765527763164169215838519603603288132822661073797046096100324333021368644749441522499787729913562328829570113117073209635588671718418259324013266628126463312685906668941330193943324197914303749841316435427259697240796253000755672128971243488718352273468385292460061193908825534867803234621204980472454723299917320840474624835746457237430701972197556505681819820885167816454498531880517258654875837068005730093001421549428866539882911264364995379627921597684784629487201665227414082460893440528406143410728303996268127274243342451726634201640232736123958262995006635046215025413782694681395399276567692534946790633543482284736182883704767714685231929783091912807040070460284033346296656225467273072109441379001452507053818367855781847419389487047793625064126902390565593796397152435535541817063684434409030199736017280357041836573256415061488177261011588106670142693285142273917027459810873122086500938337915268295781036216296300671881766101634544049274785811414993324464646590458929646642982843065264629590269659019651457675119621950504490961697460087712494955292408290306505960554228727401518444031122933975570327728769293368920950256306919907735280508453284574958222759769702732690779615403168044001215017704767569145159653136096739500270420178630953290875157339918135762451017829901501245280690186650646633435221999007276856361810894476869864514078437451529834869446435907334926795538033861192341512342916087431799449950122786438499081093526058840568363993749207143081467082681676195035374034484031807578134280503414583482426310225587727164161385182147409655577845665554082850458690850868305316605837684196459389337113760656304209943040727657453741360458277698265575985624412614621825488943987721197575607853030038788347982395388175266510338660842371947979490849446142316073027083609529845232577005263931874075817124878130308185377484012490442338191891259212135885653551466865900951616921399514441579996686815497428012568937028394014298555157832994244530427487530767115051116464651340856892079376855660057761876651741300538667993220782739911690968895319722437568890546372822651622261757325659356891594878825621028433399174365911396473395692521406743250849536433476599130627781994762030011403707301825561865470664376881866771226927307917715345587725827956412134962390260363979771811258087632405697232735790298571958825408399905986712334473382933224756422972312268886290677103599517089292552890899856806114294047636444044256598775899370387232594395230963366805768773134529234102329835087878578219265643233648479558939128939736322185844520904100988587240920975337775827750240922133234201148689978275438038180092319397771965555043866672749317034829191536012611592444719186913731930222648806507401463973908719046945994227685459285480668937799219004459718055475057650923234141711263769785785911621849265243396522578051305133447357586818423112860548070774363909624890195567971717026643283572711731565718909953718860096208886503203717299827270443697377936935219880243590190131281119240090595195029116650352631627391170572081598629678651517618732514314364110443341402415549111204911869054251588737234961479050988882913935575366147426907085470136533597787942352765495818957027420615678175855918751394915486116594705000818356091446053535582952900292307409867632818103423941083423312533907124039755626667474491243586276852143637853025044656985388575983112062195466632216423369964148916687383350649819464091201253510675522379505093289778677785316332913530443964523778164362829220242793025701639494851477760579399632915189884543285102835463598738420928175368889481827165251461996888314676541911738209277755134857188136073658873453933385461118372314281964517180935924830255593267468230186503839256490096539627941468376687799401161372958629609224192493931236261859336210697017151278964489152245478494667094708496664271104996685632965051122868550710974029594768587919526641542442224368142162313365087199348884451472016024750885186953116600476036352581485441398736471697454177703051830766462394614993208610924840575448109532885906202032654874408122105002370520223407965497421370702075771914013970363745148022625909934822202156664181531385820709423523346373798513610800439742334529313722475691885984687969405025756729796051708089405709614242694599347577476041338669945046923426587113635932507532272708105910749480476017452987459203385916325305256987385473097655963451618546572017216299403241209010693396140845911974333913131173590499659912177083022911237575856625446579894417937340052168418374980685238339064725030043439838381868443813648465766646078381621595430323749919911787960085137889203853557977477147315089257601082116665538837309654773333099381560724001842654465562172742834866389556525416063103454660257454301568447670863054427762966167308892940543497724318313250831670877219592715767391625330654923473678966130107995149455621808083343910668226889585711448166087809512936082271216090328456317915660395777074791735688985633737517715210059287739049590848571894678638151095714737435048458747955466265388506956980355370383240605608352579612087140589109771588785597957193036931242269041723776366517897300892553345916194576718981863671105738823251827461998628571992435837287928532376997245870855345561057919041183395057310905447060924109517660221242748827133117566273329743661834835442321888175046526420927878993618389820515120905645529267739353936931349006912205656475604999471667179904024364598190802287493569003717676132300502911898708943877558604449606026945603673427777023744128432603655142452460774447318893576758340683966175326146611894058794714672044954268723265700165698514194864019414501040551673925610789685920370837609034392150766680646756801528209111893465333407277946118211118227607965239770183307533520267900324021263166134894081765562922832903824585213656360644559438783852518767341054914960841687755850899367049432872007086428170993509301687272151105024466501593884781163544961855823878896031506799692806220950743254453250042121537814227850832282670736953067323818248872554799300747961250789790010265974366064077903840777296075947120999874747101055739367108227853219525460736928090179516547544998541728239065872687653476520242958889574138636865621913031615248726407492027094493906450954543742183832425348124612342370223643091233260726394742020773011046999051279243159070876983534054724401567971844058015876965591321360876717511577722455767741024365134147532228972965995267154357194761702958943985972742371051710974270024861106565027921806301854205761631998282425749794407465470631778240622453657334032206782598690644061135381691494005472272733218225886565235188024449129667745939278789978551363752704517973568324157837202273610117529874299037348662867238384485102564976533461612250461450332706445037278398889075264878346522880946440513347482339926925808838526887480806588170192364423999252691814794137783989882455969857091193964497016353504766402221991171941616834919286422899146120298032231878578630406159929221197855001010183388270935199695920194858607032929319836237723610133289704163308917561702491848440499714697407479181953062103893271671689557519385278553715904948165118746477546846154477609432666584906691106801121695414542332491403743046386462579069304647660844906576908293285435959528622013416845236744815467799305744474209784552835568511819873268899368626660650028147858622419136811450244713642611224982831003861506768259788478502041245161328026107814128949797670701340454806886455756121097827857106155933297728803950748037342655465452191776632052066476512579356928031842655420652411650964542133320616449103856086554621675926292094445838268354329911921535958784674801989257186963311432050568066163383383433004474584446752688765805622451387019243414761573510596139879599753237401823877839713703927912710907939031212991777233897002506295071966295882881512238525380971299491755431664635747018152638137732123788560383634045682995758529009372079886700791803635908635771771506453934358541328198950253609156684245669404594453312307707960409736808185050390836349877216191237793804238664861460164483507082860608626954343772294464503115787692163955159245329176566506905661444786924617048274446323995606303965011853403167425068773675568443583715845623411339667950258178824002376361211921654399573890460677201991114520771988411230327122994166549739128812106121317057360058567201484886992268654136542184487324930018639745054667817081027671213393945921510886206392988147969019474862266222443383678672997564375832700303983860968862849952580902750468465194749158554413386098608063240926534934138942354357197297922819642856848800679157709091510802829592561296309309959516208338065634960273114504121164874446544701861309607919868051225602667802008690591252743340822689448573100222572890380936718970947822279115986914425860849895046685180541564977446003859571299592675821850894666534501479929029067088376834214028305188259437019094863671229776635986088412787585427805219789690735192655155848599580394960925419932491088019932261980245690381662632580720280873096772772855237637866444782686276270252069455962667789543991513474978003389918913487073765970561458655019850918731428362138547145959350077980654316060458082736321224615635009149866860863571618555648609266453101144185305751406926627524279639918462869246284722955418194596272233343675196969257187425600884806513688942394831360467865792645464159560184368711835879657030733712115242084145190833780427785777532662710109986583553544298141258188148337467566697325048031241740443700463316740135971311486282751492930781862487204372868577595708124928552829304032306986866819489994126072946976083533505675709882573681532397451579498816008810179595991507020715534032211421399846360178950830453887362119172778591100701182242701801065389408451255926178731565072857289298147976015606890128781396937508886513850671208346610714061469191052056429556681311254165884312518778520210002638371749906546811055404694729760329479089636373983247785988453953904517430028407885003447419296375896282643009266940145906939330563098817556271736362883453575493309286960756812074536806286378251297861737644446470034940885849610354376637849902157962494891262563149546104512870073652836743921882895444114005712445917523848273560704161990525381160273524846405954667121513945547205361192820068124009065194750979221133640946728515543378028402910899740009894876490800193581185400069469119503556269629326656210164160882277966027364444756530117541197579920509669113882816455848792399571906755354507192242626061609751367845817252626955780564554010948910238959483544732540624182092176528268384330948080578543023925295354688646395638312597765239123440184826683210841317814368947766855012850436297877386347924730729759157497356673325642669257370482251347116014698959780535816267573953646339630765500718541196972522797288411427010720770932822700001692825124334470569389811475702254990534344130422057161581909330866555598575312140193642790952956080269731418707100319829787990057615476149410886790728789017889545099484784839259845051095525472205447962784788105196249011885198007187177277233034819755985493058311179373188914756380327626394011926931264776964951931486717448457297310675673872578363473514770923157787179295438374831377643072527019555586918639637390557082842634703495212423326662111369713735498812141250670705814998441734464482883144340393106063878532791250729679781373018743422574396470664795739451481369526687546674582638222591887378067837716995115127018366020396862902103599535222173119124792809638388620163210455601322800279222310785057113297841513955618385819684289957430692865961423593033064175137878772467294751554653159474854752225191813109589579971321192564808200126838907356766397440578646964169965270400685051045895884134502934219656384562591023838851564492864306944943205838386509102849748909036072015772464104970817622688948166789876247380408690257201794201001517830306809702689922378387056736028412353048164847843923423854360134796692363013832761086423329407881684627011240353535623508950171732924067648990835427607178034207742239419691250522194078672927868993431819093300515250241945105541212553542971216401158319719326679784001330728521941373067820499853023344779850131611594812267769891191157011623881848410397479556920026342561657344124496502895799531428822576734082053561096700376935950243371124569671614595443288927296463279428155043189412640104249039403079234284261354701408399023649965216973526797275394223058584131053198799165502202139480932806373135175378678236386938099925684969389401797040730023313306460859358577235498289338471619503029833281983281430727489598136589828141979128936530029722913525613425582110794393682494312337387746876883809667447031374598306997120548701202062571140603598449921021638546088284516468777567932260435535265847260682469422087182473914418022034044610560280724108395574200164105260724687102704014006859444046561741156950401569741808500723605870486791399758886541059473286811786204812577602966386691753059149760605610291453812355886673864926556189995847931146858493475180131546484215400403289068371795951693127557167341157401547694575220195487721229837347256160955207936606997119254354614547098190670425741374154224841744077018239429016406587262130773394305799415426507247651270210867508182387505226602420954012134547466558674649684137700674557742469167148266423924954227499693313385810200837707684100836046045884314483726899105333965267532631519487658500762352503119420555022867945718792189354163527696126829948675033926092832342902148713437548117430297615318360973208945669529381596809124291816841300970480987524209809548230163469467838231905920857566872546509859425241633966307422294618267118122047105046046315511570396271680209045038959553801164256007140777818153611826742687026285782057020415804543265070420295652433982318990249200682611973639303006697084588964030562888996990274174056317104190111936943885859098308802039037630168689981068267692730956589740991310861926807764154253593045607393543334739477376226332732564409951230151548681197789227643753107418264540672872577334333253346530156839624742728964593843746378408084487568067574958552664851020727793877712748329182426432774798999986441112009954651787142362151952669335488070635175985611840536694860343760651710969529288100861926166007713563951316397372414762162352156130449696131263026170140245325564427419428868447103326353112358993326278660577355457481354403156185601478832557621401670030759080166243656465378301756171367704075728259982868974438170686575763199879431474995432340448970326864200526767637431418088152754839988863136533069683663785509421776466833848623479156466484687030836160448000865449533275251783190446773794748984712726138004221113965552889514875504400638669674080060226286343275400181870360215048240745555206687584957984009809263070292904077967272690169569798328502475942753899333769892101928802537890889082284030547794346169864240888246239090329996297035684194900165855471572839715188937624760098059165880758188269009876622729460599913472334300406995789484528462242307074596789931119737714163220874749044646570045264082565883017621761000959590682252761817761415277317221032912682859039818975916684826796745801446271033471668081028120628900843033393051607716774112348117971315812608723480323736426150874167434633137474249954702823996334859715310697119666065094657828230228906675784099475693770586076162980613640265318970365551852791234215438374920449674497167538756271150418212540489578595335271248937216410612313472160635391038577056819162063176673022832997955618704133278185276331543248770299098078067392180632736797455570435987443485462847450796744655579860937443144196206288857486695107560118547083580512796997591022825275098800029455652474857656696245722780057999225472514363077641746183631406593530823937980202583590373555595959945728453691523743702660628710342649516454074722202265355575366295007988667575282681364774878806916587828830462470294036330475872685443476741733584000677765674928126156044626808328636461885792227797906738322372314526229091612720158373412463379698979583199400405529816510273026690076708608895394151608557916398486825723634314575025015845035401296192226174309181008052117399526219331750677913926390625479188731957913724951181132630666078274942655319216779392391806816035404954839999640510256373578588826117462286996478313003860771557270487574623955790900669702988262358225273412543587617342801107540273583324421067738955844570630987901669711241026452968594072431701805316454321833087751802964281467107196433648186210898209631512850421998239658663038391133152612901599469453392960120957119090431111720827032670777522127984427195188694957923736225249538900118935995332877392278752829604486179581208786466355140183410046776191454874945580136306727687578836864667829742123064784997969333449276141791864282382268653258893575952004737482851887213326122776459877795946650427651982326640329566438688531389900017551556831134696622340190747695550003615535272491923157240418642943630484847982202463932512853119673661483825423824790555172232514337985558107329470106826978147904553253514188552634821115100830140326504658468717310408557315174151964224646482473213420217964398366257306522591332152725395908594423736381466392817622244199511021338539483626350356545428821160345297689627008005024091152336788614501711072162385664637622178897893863360227431545622020252210043778869638411640717560965630084370102671600771817912386591574821451646225222463374085177554664784020288778451353538910992159839600264886987394973639871663096594636524690919318503086636943640544784904290665011441284771580535268857770535621652531545052110075093276037169345310411862454768451774537426679772779097237212253575825570670643170453797010577087055736349421010600997537618822651102118236089733564874206393182966864557413047223820942738282957645488647838536224255240037328694169882839547886994193924945662414073628258380725345374707166735588070442481050161900482694967309694030654873665244141090174107443048618291001367606594461516077846016579455890342970347560950579803661835921668927428235751462051179744520596647351022223893822449432845305564558028889507475868126809791853621377501670232700855828473728553382110420470780813479203867947569638348145205472991582957013973104403466063591764317697776098199781838673015552794097985490162968679585734300754139788140068963165974753140062483165387841400377961678859984263384574827735324001439626711326994637873589519925537054009956837368464795712626260982706050048852961401180977432306546961692375983125068342187637320644277496110312798830569071052617442546473704469998379464668739230495827288792191825613097001589871824622988779509410548069127278168297605319834378938674070150783942096032029504389749509638165415185635378615912726202399030343918636588438384249808553867117963333198991276964506286182132101474997562621955348361666599973315671162492169423691137809025688705143143762140330786420141777469289914783622988122426098577147509009818975728324374098511149482096955430224143278528168767165168977779241682292351390066613965331967407147641758546280520443598892454142370378576163065587666072295649688192005819020208534389304799543357222474584829144231435078194319828176051470514972974054318937405635440249925436459974703292410968473470964884812546042485664028448636268441507636161125687089828201001771246493134453971513839314626607735151157345285150592346541621582799212092576126797796373356548159689729792437858666949320557888265326869076932459178321948261384328192208799095461965182151273134834554878625569706236949874077941442180310800215584833687947616347438329034692861409016510836728515057530797228594167192472229304210826217850282794852741465972373768828638785374225170575977991608734386666439792281048044050358345228039354615743129325571998852618124080927509413573235999692929096386857582715916037896174284258037052744701418478443420572465411587835801060963062409182430579233741931215717610173480204828110282266661455905117217380760777107392974843714778197633348648510305212154317239111850291363863127698024119846364283566898239862682160047512646465772388185789917363139931865275086660434247336641250448360093276707054878796215880303743806972952899807093287112916140500715090930751259465749118324948847746014753143348066888898036528597548924010494337054520295128887604142629468126056302652789152771409269162613164692269975926452704126766287787674998271121745558807452126264465830292945093899477000828095616960324555229948762090592422783611385139565430734453811131890494309172619134381321294428934869004645753851975037709197706486020576843206732678965362197223008605970115082472551615320676834884972176723345410041748171739111732218128640994918173937732835793977175778141387217277005189344641029715594686484669414234825629688917904305977650870371709967874637584493273292783278170334551184940264206893963215826730567043316552310249341418997662343626765857769164889325261206029178332832524269969532827115529310236453748793544620109557462834000709571799514529707954249223296371577803966274393889434849745765372837393946481371710778665757920242019372995999709266060770837452499307553051760230197927508621408487960509382728447201178105037574464632482978251350210752947663235034372414874245836424110183397613293173293828663096252973101472003512856703114768151329133282744857249553368175070664445893266180249001315540432485993973082959892626895560217001786585725319652199725498336328965722436505968604556859483930645407406508951895864973036151110088143581192041531319356564287981651598204126611604923641952088671360297754494168913701994826924516938631986116280753789391760207206475917991432617496830447213538066658370743999001279477922479783882003729261424544712446272351373918990758985059448510891640641506364701157940644911722332911243599185975773775525875495823246487350794239516155676720094160275835194318760340747162788021678501859165064170019818728206008022118492286395397862529661680768177260581935341077275624392967040571966539385279047190802434903637978212984147129890710354569646346239995044841089748949132656925140946888990829674771917512909020474975737475574983865002453480198293158067515406629095146773366387183496168460858957364827309433122044084451581043922419339452841575118381399113407546302804238686518356492784331934106975890483239024669558083730923774687122972660205988811148278605007915841714876415191235512587080559874181880115998864801528921185298437114654176853497095007071548772220154989173148263795129128587132735851510753480255568260136779402468151817059802487772064557669921140118702438997937614081348626976932618839475142835912624403912544380023347348499354502527020907483284351592072125443293824851030478876440795540214024389747166814312271563436494699532004949308415340359373991139576023863846367382132864116530623789462950197541253267289049184116250529385399438999890204265953631787682318211233686702809990739901932714538336392273674495068267810534967064821346384177489333479978349847051478386971433534824269191384698139486009933982773938345607815238600485789312149595072792710305254504142685754739547388293873539695564116204308855025169340336539347468066624927518740276652237521937639279940078127080100066342112058458437934019018921518901498165634846265900257006443987568483057270734259289077874815354277428958970917574747897299604302161989957972027812889811241930897863675559519342822744817655978198696346449144461565682738160092283743467989098144635257371211002485141501664781941011876860776083228057782312793713315093253687228955440997889494218929089273982359531764254740156583633099549893180302902105826114564425437390901270193382517548211303661175059969827380304622956260923198974074110677427812868486000467627258650951514352874298633794654423620249161008301223325393905507887212297687922423933751840137815725625764874872843422415779923686715383762057020137719570443297866086207199781323003957639752301020986452386762424844366307163353497936307496839899368461458541675756531022934296190938086117055133050616918402637915191317738523865950333353572671379002177352448240451408052629551520417727618773649050462471541523219140061393800636634312060576284992765531088640767204381999341948392105573995199257065726034736579500102114182060005038535840876411039364679648270328863031963494289324685781965200315968349219196678757001367689117697471011711624575229247807446255462323749030242139170034611054771701329279952667589602453879520636486135787521006889497578921820674698251096221442194339075707031203838340851588087693568632439742168584595688365170965748575596467043618460021862130492544658991879915728354373330296515586043557906201356107127185374641872816302160694033972920155506266203061758722358351595601319273187107714629219313984073054797921126110007472998193502578765832599874214530628032284168531268632601285289880397262473164089580115977101689339739350835520940538164782597378001653102930019042419022796782138188011749963601233870367295548572295785166934936386510396781415958512539084587904480980304290253174285694372859299943509791677824201207292175126968202148426260435326491584170484818192189652047479119209498486840840724427374519608109377260956012626903563338697845877006054805044866453810673410376378934709917095046222230630952431685618060373105466706988390759578565463415964526739999110401251713755862050078675938295120555556950630639862344015286806014008743465300579545945785937270058521319175641023345090145134858044860715729082290242019064682374454665933780320923463037711891832594870384111109234164882308774726987832706803863307265683055476295661875118608417491062200730267456678423065438527694870581406806665566515465760180833444854768028806550386823803639780761407004835037634548425017405070701530654622202806882618255748187187932866832818023245127748837413083151445342585554277813112054342076479226901240725263921722952390495445296443082711729317995440352267589446328722528836636734772410029222554621380955319946732320125150256307679327043472094076902712350573581187245672428833587320806789277694690118894833455724611641614246437180963067678463710573192936725230992383532172753613853617865480681143061149489471014895815185999071399487951484881484911890881674869561694715696186532378604251031211724894787487632879843866252516481003057952056909222880562568521360329140648635795284698277073407130302223551384698142490524388810509968128406656455759961491759574502008200534398622186013803927441578975779160507925238533279371266721641932669397588316655707471897203726409109140951281794006479059935085408818305556503719974962480625013450926281366141170637868955415109824209846870288196798856521106093693960761817594430034284470151344054099288779412050772823177668094968890267676605941861937898953021847824334824293792959557970979764561278052908800122794552983318274256117246949551557606325615683365477477220925596956168976685321158826380783563140228639683605949220362176779534190665136732779507617707597435130591689718330609893119066007823342864292973927404106647354953222883105759816321302729698414425054247258890089916825772941784740063103753999095316843432315596255197119226837134916040732320977935357244497264122300066806918892621369328422681879286340941196780828571750614106178345830011371802626143138023508910756543594245729702742450356208855585988953641688872737002427379623338249175049018353404176551852353785630845013520039294554809005960889406567584009218273154770046345238603654743010336163366273538846478907848796978082247798918868144071851955477420624055819312263220788378534471784156413975480924474057821224633768470492620967638495908700599021457190935118306649765772590033985519748024563677577828704258023227617174853636629422222132544500958945211168831190386842026274149052515398197260830716577229158476882184850078589153252395933579270919867444898062138261545834451721037599827042327377960286719522592206457545543066723202663918735167943989364191834070899783087971315527875927989655088325380573497988526912689241019784153990656415707827619851699340018176288115578866746040945278701087883607504224724787619114669380468967729304743109008652473064254345509519472659092683173918679243394303777189002488589484494962460552321133855585844909458729231127276893959336375766210224038204836345498798139104519326217772179624186084489066296135534493998906799042071523598095380827766262986399309582292197216678487290132571475085356873147382528248089651428536536022545515215771670673902501236604781213542644810547305559081703849896990125839758095955625960319973483522809523161583210019300513087564301925827464873245245837491315180449343816231278832326580847902258591935370848745958778203649884710682675087150828652603771760855037749124196684659106503300076171612913423771566853150657244774504294467887699429969897273539717956754009275769201937117719198758632245393383396052328848714364087052401028366452560917681487032280839110528282727601227897291641783824843383518344585656590417042108475860345241021268990096636930499972984545445461056385122275127448620995464307115599988168290151254236064040895473832920760230896288444822000424323128520272508852818700074809361050152617813563367907089384868325914298933002778869443576925640435534573465630351691682280289307435938136882991257802496934006618590703357017841196601157446469450669050319570055254480308252801703995715015157953020898746918815645550760930923829125343406273893014792531314961412109866736877018669409917292434895921391148380845226956529562879870201863599389352792610086095739151919496702502688523484726881684476756089826955382427228802971622618029917407851179288443686219538048787147124717545886853781391903684797960195895696675147521282804707703717139104963096693484511914477507545610201866698176146489545989185542313365973455533578550528138258015567296412548485747670923157910261091142318569820508222764232539939500772159641138667991174638903623271763828929361250668420557114566431153230700973830516220201810128538298712157943408092312772052193431028299439608532805522656106868828869601969828303830928834801508488723974859496670313305651837709470088894188780314232352495280245829146573340549597522153642556660659431665871619339660537147541937509761913387546556977219853184288706769739474349450868259064299922427884935906700141169654718808038962558795134285281442182205795468806472906508737372471674891854056252262032133744413238234854879513142715797476815428415216938131400888881577065985176474976974154836856275036778057472913361474596999143753923973867072009470281737551873208317158117386659569848743949045360495168182040419556610495061212051688312159452989341078616016801482644035755895799733650328392098551974992814740261295060068111766766834727817707560604475612474016733851368531967373318089282876351407984253815427490262549717239875053324458206607486023717438899985412645189363647512358553339952471731667400978453706123538775893558717298344535705969474327282364870356176992682110397328749823974637224436959995408645972372252817524608677496939526587687493019115928076038579510946344149842535784698247155849697033699302475876233526436267559352852011302713677876442417633089171607103751280033232995772990114399607985324720016763456542646537282407576827781539733021015471766384610426927740163249487470265492372129503691780006195013927612982006404786849553200345420528093883254418219416317213559059130651462689610719389705940721971447788989685422143780011175649691854934774696513421976637653812811343381525099315149350783419639437752541206637033015858344735841444684056132966625410407240883429172025062589167235862107704595979917796545781857890789969492025805310305583066374158308149878397526456112948801921196335177430745740408676140436003015767758214192951719692143941201631578318917786896085490559672918075020294417714583719940634210435160533610304187572762951717783420236948984795859181605793872303058440419943729169904888695529092955992826107175449980177922165704061093334500262788571462133925881760703517540943122592285062902416075820569215885057607669324103984621184047724481645624841301661190588300804618692186770758314837028987502452422688520173598568981655571438747304776997601746375928113782985030900532370283778922068071710093277949243017141046061158570838151028384145691876796337696698779241731268280997892960370891152911158726149681120975947568350093868922770549560451073734404101589895872519224497969427465928680451296419818300806206242326305456795996198064106337644066265202947995778795349258332219972047697063986490259162309497283589221232699127914334223125729951194623216774940006548801032192459097199013040235336900393067830942874437701944463932959877882284260764471780073003939179162843870758844084779621700695666633240128185977741327434904235920491751342310621653096147760500818856662992456574176715929372262681254917903402308457002378554905885165565644209535530519355599448971690104173162814628036656073420799777422905240150449377968950545836489630067289710139838124298613709944446295031186249019860388122790043735304434602915859862132605401741845940764875339003507083758474415558484564082963518811838141400104324810660956818967408128161261134786420897333885712190109175248061319710418682378033011013003027580003022426491537386107519156861773345684526276136049580538997534901507786693718441801099598322927821727358355289379747871819321438516033934356804107583012013689140630550847116130312516462975736659756995714264613244298231454466598848890720727650665553343404804136141439570009101577317189829591488400741614157660547317905665828784810028199841384470457385117874293286788991773762486380714571934215868387459267027391707867537683615868114361578861085409419144030404765222653252038870675468005511009658673655905134683516372115157373181996032961087658597392916829944284490810361903135278930100079039682443805606449934747794687113314955461272850280532176161011870632486752587229376948323270525855256889539246420185212031859632381385808110249312084416715870700207373125993170787810968260885053272000920306773264150960528207041147917811209100560824451790380699260815258589283847983947562924875292738078899275875906464308092866298977340387454652064428632335239230250459336518767608157673071149995027503724324213874296345883444438108533558199570816825752524411495329673541320478309611552535977316636470180470255433206942348112094938482493900611561662944889354224965255982647757518419108095696489837707384978866970321955538680720133906731880972779988618752822187327454948012240642773900791607020996053746025443760745828775016162067444528564972134488651729337152289753104668248578556569209770212032351185085801859145158158918824945290379864812886297749186124461977871307306759037457047975454526913952956043977944531001627286175330294294185699536748975894038672968465397628664399787883638690874720171396069271611917279290575585297532911747651719110150565433153496123367074787041623134223321440443807198002724433809444906111415163192699287013638521927409456484180920109014818701104616649329505718183281572019247372350220691359033117819899563019398240776685148939786278584175821819302161409635796391674787587193191627093155282356735989562337660600899520854850867655856384406381641838903502183693885193368574352476737993885416642294524001670205533389088343539275547116136158720593463137777735494614393959350163731036198966791692625253305180858972899807627726372908760230638029606059749653960882577122348271553826916847075420174476294848768032578012921914270736235715198342526163941349193667267072097911737124908991222586211441947185631172409272267769759235759025311403311648537759331583875972298657052932485849158772476964308725480884270848339597768076400153937333782073042901693655229967613304534192039596796199172067158395237398202630609451212860049557050869169979198354113732167647894778776965686150217972422309937134137564374933076018868201506689923705145867569693461876335958337922809178271600050171922530831493826629287892324843953922421726558479915167982826818878912900470136368724011104833812283850221874803572917858840248282051237741370723513885317021814060085607959497874815690141043705606926406575705785076567101204833899591551363703219548491617589202890564144263277965350717126124134866066807170602505601435648140552372711046748014257909657778122121712148742135529876167947055206340243791084297692604649606197627397810232140117790445004284063493464703543306011364712238010281352598862194618069858571049029500919056746876823836928929694512148555779240637121689800687964238499042641927739370385324785478911376430040527574411646064482538937454458259094772120952210247756179387081541529008810831195444225370054200263194232138823883391951928896812285818267874324209533461169700724401809740436904982164384432133573754050597962117293648631539839017259552611842083491570038001010047405964357108240347085631989579742374258724968086399214932887261889760318560368375937105803413836253811956582229479994833228032468129347844760298807762811146954982555022381030321385872642468761836266991924268027975463661190347797986928347816086532038972958399032413046850857834750645526856569081586932619076925750597401855005082551718286943227829770889052055670360318049010257005028911841198484701798687779274177054052765288019431648155449048616096279607711988190465658285514831530105281550295516833025646557790276843050161082643876446151638392492051495884808554824197011873948897882553278416061416114519760682291141008364166340344229735231052766704046440904848614814858106895720498404457865011200898874822247576976436496759072518085560479416944959145045094451722058265562186963880422241636164607742932658886464488152782346593929499375051543971226592006400894106939167251065501874777576004370129867504055548269550447510181880635494489210325783888819515368329492136823041512868976370521349015935039802340396706673274335071428363929136010558470064037063691680066290487106357186323651576048397222333202873870966572130038977460520473463564574052009094651657273487503171908750306516635284817319493685766083271127475190388078167218838156968878674686954369790622873210177481757614260925759237090740588704440649235090421921541021167097026679946108211946123861988469130843510807325058543049383266502794269806449972835205553742899044232287002891873181811465731747234958159527117542733841213354051186281109794809419301324320025153035736761319705875700683160898622488050615541955406345705422010248950647802588176962616525494701965282219830765560488460324112825799399267343250168383777525658177806272548220884251494201848779251125030418241278292322590084300970611414205096972394604252128605734484584674250490727915483090314224938645308076832466111676039434164416263862463689482538243891897779445270497685379626762596586360475838713865981873827499980940062473958594328788075677834924855744809539494101390398431061498047270809801205063533987221070028177061383129939445507095032948683340543752806263296781773355867717575036559402062479784594975304137722851338259250364061725655531945032727191234146535057773230717231374081474861485381042246091616044306755741917559684549790291948159154548334330169568932297344420970804370897713252005338424685506580364553394572039812410352636651256287678424411438279692032318277728522833647425233037888292193236979535107095686674069221195345645791914314608358616667854965248295333510194999825527968176701233809548191687462348659810118050545101859896828921268504030551886924719476990060439813474112543471430713619314308284740936477220007562891608946563162385468328515855649938189588229781632482992113785028897475586129954921519306065478078611972167382441449189753611484451052081811403019258637039021455567628589537599373329173020737837330576344465655156581253872729705911187306107671486745535752380612400441268927049110290228555879005852097431625390529846074934628529777137466969944652424410978141719715459596202835632824370849565850403396794974748599040766304023847125879619658068435469179552376573185618735261170208193160558338353337235180454353061170637041599873414447706569764123405117325453384216616014143896406681335458069130449899796352924175230245986004072439081977927344878262641266911139988758921765481627332585348820422052142982594991477915775356611028647287344035332470308485133900146628486696895940490834547524419638457948041916355106914679149330988306959100129389874154427055645059758898833636203339877960308122929483431535318386373036065394988813611054176500443800635242800692406808171461038018350142095408655463183299479839508295117139235218048010944387997398428790040473173907441988709987734205205221634862093303639744256702200491863319278797376348488778111546363715290104380924468862279946906781331141635287830500790184104925533858825606156167070003804806875227067384092064984490571975608341813785310737792554242953185055089327124561346611421906175353881666837938895551839645394719081756305711994683548631864929687505795115532157728769822676896784206225031183383467789975564957439547100580738506536529215537896632838497303558333292469874292479599391032795268310904450580952583459466685523630129616239724173350059428198631843371192352417233453519702371945241721165972793046619283194574532590850864240020201587076606036216062228136754631585383404355468684112359390814463073353983079339726582022383311961902643257098791217051449680856349788744568501717214856699074261131096919144287437176731573814168256674614386000477915593524139585290429922887593685057461331673611419691418118011848580317804245392085624726696768102055280706256746014421245021873656087876832674543586678936272920035478031547263808677054502961327691526657388764662006153384222835030334174733154227458400564045021830153390257474339535398893228675964721765217820261739461636077225734395272472827626087153691568860083559516818369421951517724823683174432575051668596735074645293162181951423821614283621766287641553760402406112945131647011769940747975210603279434786091667806358261682906556673218301024251348125932516817875616723653322824331224502719563208970840453222933500432047328985773861466021283915799902472996863063804012004276015268907572769152460574816491314323051869933321082364357806311460885483750493564213304918030490522725106491902669499978093617147930761316096128250746101134097855561178638315654363145877079544747388334186705075272221458994628206358172713973163176391913031108607670595537229397448676276501287023479321962173254593665480299045714436130392000051333358609656014565589137923470431982413316647541806498265048906003837500733338132543213408788877025355718583179857500259367644898819373075612931291727982537960638246534912763842910316617671392191356048036852278252866511288650862915074465172789461816776097341252031413333051430438908905485473208949097814850641609160017129052746474925247440113296019087199376544088090471252697345381185028695003587018100044531937988244226335565651781500697798961763423680942496494275164400194945997094204632809781343819260260327590449089905164366582673444308030579041689544601046137938256071963485297844033818929823876398956646775994361277462159187440887815883486527488509916497188457612756921984597808493602826368660131018742295693413020111970152646538811218035542088419784210813894669724384632721512384823106374705538515943598363274995042677813927594291630415855671202982051063940802063834664653594951425068914192517504010268732859486841522603909565403935426594363518422876409459349123652936483417035430154298502273081921229992283566804324363140330360413674118359971765361898104961797463246397149361030245934537986334339251372600978805003122113611114230668698372028367559343968158975841757070063551233785251390130402255014691434758969305652241423333531930105894235392823140701855110164609280865948194666509449981334155499244394582978954429622992333377639091765656836308208816449579097839680757620642535353785353331660381058096707747858634877137373093745713402275786125138018560404467883909260348278425615878681663972491552730953729902545671414020490972839567361300148436090999947241214616426889197824161592833568954902472550956687776869988800333856115252765832252484067239583397205685805637066133791619246111248239793887083449075596809016608023883608704526358853747616715435033979937446240317359335744326160898728506560902521151091046028835971696408452780591648226655408093579365133560621732311550327209551824222475395515059042994931044238575088444869334871703788450881051602581406783547022516437372510307804771593738801649021790059017216176338100092678988092996586909259709519364276557283684414509789050680173055313913739298480156988391286508303329888344198390937660649113456956875272307190643121017057143333400984513486907864735916214565116810011872525440895928471141676962430256166241752049754538892956999853812838371183111607102172017373824253458832129813147839010958729909603173292147354272399285078162255872396723949757732623628184260947836551852525741741318702736338581048779841443387716969436696169960797516711840745818045669570296578730663121715832247351164502207175030639115707245123005484164147908703233439181769815768916824632197148907314814773041022917928109855637581705054702404442931854910223495348014480060126131348139832288554568594714820032576192711863693349418819707030335479572451443147503708188164648764384428916272811178722720152063228466556929617066596290684139727129658057765362247474157311307618732594763235265098342488269419658606687233359128742814242785149636662020261090536540903530224372614792011952616231243364590095339060942639671167609137623475015421857237312170816288530033375172655136821646020543191307568594550276412581657520902729399112090703063726130420459183201542257346386694815531285613592159168035243943361740214031159909688200242117718940166508415946109788654743184624600401603543751515648599549701350092441754363910957237140797147611881526103210768083822524120479317295391339527384446210340231363186444727134739336037336477964258582427228382839824884801915342339431420673145690294176833390980548751714520306120583615534652356768022154450343681999933018641332158652226953862572566645052968271359455297829657072525339241199304953368787158646868156743798837634822106035386566505378075105038109264370089822071916947459481397564376599806603848206154778646120841625121967963550520095644718188233118410034489744068447431254899085975103352637293512940292247134864692786951363068933704576801307788571861032676155641970088910622096135005345976952844567205577436448785541704468952036709085407409207812634873576840633543056982765635963255152082726573045431040500983382310472296911280281430658125990189075601743185817830003172187569252161146787076060104540123449648983516587382505901231893198291025183837941904233074313167999590096555313302069462779266901851581736135368040132856853500084703562058235001407303688638191709552251120981776564322652719825532506465232720804901353501650179400013734878952007057891824775244352289308610428552036566616818700976386545103530074777388247798731978564153308853531957523007376932281149255234436592659281794068430592762839694970912227243536779768206004731408654320927724167524225798803347477121198216752951818336077125529208662859590986741503078798958289231682721448707051634155331114987650801940487511649786809607889118828822993710800150934893280143173946125015605787240195458154246233016584876437691109160316524062891990898126802274842951430453028883221422769118665316406126209597180970011722768475534883419830573770508397835511150148937164194698720746289879283779477855999898402875143132013676710633817722352346125285718945939960077332116993587271826160204334548882766664782342570662808939951861612119614563095726282737785130222330806651940845703230829127400218806957637594043170034743481401021378842074569439624610167809318397484182261557344142346285823014295997380670434394820909470350022735759507841714119836662272437773633365868416725627948556407256996248814687357255386048780292004945640407897216060217966958910295651972199650161485514600834457884673161230678709412598504186138532002555760118326884066246789647869522697253111522677759906438376847745500261797494055844300091929642879760457407961466657549531891933309484564854893189262083458921751186963814549098716961614391268692157988858634835534306047028492773404589285799087628085425610868724242372861779341722471426119195372489813309734327969309281008826262577688687078107239489036536080702721534544571606456542910268126121549035267394439465734187093523640211597529485532639391073425493433154397780759764624427019122437216980514897137990275931332943474621261053653390922244519693996467083054884848231648019251094924452737447552689166194119419799778607677504042059037258078256378523449349408399979205379277027717446293986164836384836686781568634576760624137001016939226957806829385191159690727049580722780233365759025347125413197960195831341218585601293801564510322203053757832230100958342517807453416008553704938267560224504647896184933471795706795574951979371606774287741512157926369387361873672720286377409946234351762595616709087888408375245654687291122999408601105356128336473306397201084402731389726643514220894118099081170712611652740621325661249329257502725946707107869102322423039496023767998163051252867424204265776094282027188130680955380385409232445555034701440151767757630745322247223728941780869706021527806213225341556999297987478247235241783941174206324128705390711165910574613547995072380877221896825092331541491027270602978942583678216813330090939813499777911255834635065548277241739912987913521316586507635856031321671842402092216540713557117547400005082517326943550646550694777488572126817467147068851357285180790678128746879628530715537943823479318847737579214378392655843003312455127482743298832170838730210754065240684980687626008137922847259695755496417495754222089950618189633352682997080352815630765979564093518046813091905127876680850701028796672466816319569255240551291144969804555430157540998740416737088068877609231442602261428714382251661212158215821016304449985281680523604204531647170607040848568300537744922237914148852113961950551607701154411667878889568329125694892501390722784194374360994051765835695532559884677455100622947392105428545303437392036120481748489028155963819741167953848435928904754155682192956210809855334552240372553198816201565018575330893221436586195733767065359467286077163307686022940358078011649836442350866381313687171035506076863367307640266611489246113132172266075603559019049280068878638491965168481346669051822962439637406705542716585814426327564418364845421733431054289948394294875477950327934924370650656746495030656778441826265530436335776218254783980416715639173109369836646517609219597759170022567449895548492102412981003893735826201484164771827723905495707579339379297625898707855416445532344464103460540280742084230786712372218400121931714872082763457776455266093405505002972982246974991809193401925792244598188029142720900532400251507349006738834410301980342211390598952674630157766591128521326796509185531216548170128369506015206980653839217334004987043372463346238492290431777920905646101462870042667291599235303977633100624801469410761003117252589516908208218009252747675821561187878048806129686350593442216782798704574360604851650081930073634354809557397623465004849914380852550672695991173209709710563517956644573539063602645896303295001893335334036081784078997457612075799929405064662538117882872291521644319391644196319559671194069588914046564782500346342994891280970389235343883362226789660232234324312572928977104824789048797229930579410646096709153739103490960330245898400006428703571951331524973411939038894410462881898011148190524659157413284818926142228323335055017336695638821045374130147995890239732988965909919517232567648724024010093625526553552934599329273065465641022755034094112125741694169555260164513681636218514289172080380629141376709684725255426402829829637088073444381512221691076209891143667698516064133063657610298153399082865334207956414031955769507917855309008917283976185407446831570529532195987415527491405656579651547271462860534129686329737970104303947016318731468646173211013337748083469376680563679167626850054071112222021253091811612031011596983688377003670892765217677086235898243768697118440228401759791459745665053163452557825207421713180370717588207180835972841311925107944761723332457825216976190176203627492989672344966518591408838403645388079586989982089566294051480504906209492192480335503068330004242779336014057515882342525693774457187124738879784364145802255739731373756429375354874970546015304511772026736439702239519848018666833490576781869199365299726214668435432632483320900879470173424939230257588493710672492205745336504479493918457508498603089274023101024878719434184131148168526800412419756698691035912329095727749498867325765810575094327232239229249159986216118321880029527367236380050019277427105725224817355789863698518840118992996410983392093648268737968457055886555501307750374905781581613388151433959238656421818600305443622560158005835638125513365597081849558042484124770321231754082758567611835953044533969084378465132357334055689770421956981570047978961878765580375861364126047999462001073780826542305259830969640281992721857968599768063587924744353411374455855499997895654581790010748562425082830228205367016400580074910255335726849645082293988296498420316214123132382711102746129139411306322505508205904517740712643223506210459206822763704076940337963724908853157591427446546999230088188114007398396299774657007116354351146568910545895937136951187332645442034266782201228869600602408880202673284648349180788730185490007584927095034737638634574569800522458297873950922003587519398135634707641313707905470933091040893862374370256984041900071067784790404386262671760582425937972437773343131729427776010738473526962292551310794632670082412286295193898259495632548015222968486562457328025895838739917309498022842979624280170056786378651584317212880569001379930880891375531165162133076088161921780358192921648978849581197465529188093263259396543922049622797456733442690968450447138505955447701681816397224696203015214571954792672801413402635726300641215622575078545521860299293399313259154668913162763169223832074067525566986823910321571031657536612701180030586147694120892407411956995710281609239121134650754079532438187228873600294813684862269747452339415911261087743622492549385729988888292699861857928422524786790694379590672787058176442340369584831972047923457308543975657746592368836915411868522640680985090554148584162319489349360240977691846059075149795238126166800321545477476832673622875200893974627789197888009456008758570358850702528217315511451156655781011093633084141527482517434879433036277370759480270958737476126856052288082522225013413103190438404665919609685215567407514837285998696719347683422619477562396193249376011720296100546878924626111398064422441880370797782194872759065968479527123569834723944870682341276885815933183553731052318785353586817252211543170492013612078389633520216228549656683761246406439867195667168013029161636939852535502303879936503494791602646995405057235325336499056177218842514803527429573669530903224727436860343143099263590874009808510806195708681404238986003810847388867140309118909255201130048074860051670085063540480358032258409067157057202888887062075754475532958260391072817352201483831786741410905564055118560889180866616408997252953977969750124339192040578014148484557332850693950962685390619644492522558380844453884405555269246325497020248909212737314224041292071203885105254643965952754463051299395720998152514650033434152058515649555304378549856734202812182957095721995088117216516364514960979346103429116287652380775870200894973230213234723355900959280532303604140168525450168681041585027293183663376089534475129737465622598815411981940230117071338440750148642415065092552681538220987966776994451892603618816115899444781222440009177446240531931035951584939747409154989951899395380130473109702174537901372115862996564834484338288837922508644760862262248376839095805066318639032899025639838686847567129958776012849045583661058774775790534866681568288178135084540015164431769949116565207221319168439577756094349397990715545766016115477062559461529712794893306083027441176472556250670894361283021028990252721243275889999923604574136183870289432251433669427786399330532948847800246542349229523834736713851306778494278481916456063503719925402820137344436383541433079780412863264879323579168077272365499443671603978145501346858301847297439910432950048660350340294205392649163545767645267069769716661690587449676953866453022080161876613123241767402818774434464128233231217637549325068542629408362853113453413126148740361665023644487272602627064987590288090384860761889629971212467864934852797233047027083605833320444203282044528966326178890986039364948610659162383931109017072546458709179945756279997144839185182140127351895171982008123736240895912694541118664037085275901219368024882235914793267212692375378402832655942115568037593527438912945807355385472599470036318614943040329637148658364694719485344490160360606104303498472934685590267250814957189559684033268100964081839211353414780091906760118170509931333064908754983764119620490575179521791472050154408451516618144051035160941787153084110435970481584856591554430910609847489025410461771808646317121121502010627421499064211316881868353295816015860141220655825206538949181040957104204266700307202674132599129564884442383624151884206371047614624743963331965350083087453412148594189361627566420029643479158476578192409383199094834091625221855251448752837141262785651419586891977501722608076346629406413446945560382756760598441949514392412152964269263088547876161813767456306034374848468252971402315800762202240651418886673696876920739611471869444854331821423278694227224201570031880899129594566316108364543487503636962793390062952904280728165509839275507715014510706644579678165145216431924331594641925988880312895382831234405684888576567691967207499461623437179719832388912358053497724448700295263024399604027768596501512908788664531331847225985165748271194911835709326088833710274972900605322185723015054540592240919389063041383163743694522878391461782760414408991040671618304081785091689985051888411848873501635777636349126536543141579341400682269088994342098638596087496722978279396555961845054896127952903430689460812097225841003534666784836361125487464512766270668965188735117121625688808153894194538604926833873754105705916173610388969124508475169180626508668732996722462085534848855826503049822994652749410645989059691475581084607270138444167169559372841803103687638018697709830320076715441070839152517315776824120845462163012168038564726056189178746192298473813101132718791826637442675337257391165538903572232447405017683700481922030962542445895158112845396244376377527235075018073242071936107949745929120549297089886888902279649820290411311033240600211160114063384882662019438299168424378421273735513616944630331055873733423633487465454195185737866636901802625561043563834699994187757333911200738552892850147442794045403263518433817339309492912667131465495057133063464623320265086667493254137835030522663067241233530707287777994407542483364381631184485247777071392298048323929218739161939915534623069644924763117069170538520688226008373330727740835258571134031266797335750896547737866579008435432242087147147766635298292197613496248129357430928567491099950970575725395689209715855823593530563422573536140677439971316854475168385780789476895279966403704964792011265417862960075392961908406551613100510312273456433328247483469455516375872758267289950107752524424466712979497736254674978373841017620148734777649837601282786006492034396089204114903179949464227334927882532532882456729975569994516461056141927432760618092388538723139152583635148013462131302784426927427308549685048067310772424427144493793426199073555906480173367964726775425250266161588147745180476197181099299956264206077884622070487307597609767758829962757034552726048592351729488178288134235638212396670046060107668090672949226619237421506971914757374870364933283929180882685452613830715588824699620827066687200899765325640774677820973657547228517636995386744578850057775696001812414659331948158134272865635727863288058661275585504427851510620484248125379234643954679087537972878618522983193640565793796575083059189904384987407579316071335775593681625091425715292307495826987582755497325206819360410023352818804649942573509521079739335242394947395628121981772473790741305407313729470898307742015393608455148358367564287199211670860661187007186782691061853911845721201286798556914088183823926064759777033829764279668748617454503538281054152032679679851429120448977150850848773322510277558759613377512995181373812916808780602499671486527244402102898984085184482182714044446909531973076387047261653058621058528647221232789560183926140595342046508665025271276549929738746993165411139735571489255978104217728440793835581464653016568346640960919273464710324248704481921480660884447620129029158791162735816818978889513549876817646550560762246717813169837552029881711151290261039954256576111707357048396962186611677305511665969517527038193188209044034778865891433983094866216787207347344968202639141337949480588095254230388775657236856342637821501591127549448727565400617295145299598429854019740050864714920790200054642702675346101357043859606744359807594756956066578759949603683077595010916634883766378761061185808726415093377462789058615009932803502811373291439565653402260771177063912909051506982568564425546617047834268181573702537314382093576363715396049143179533117994071306087786305846343371140325624228311779466569255440816314416671181848445732101693087486491781085293871905546127192559743526223972619304676336189261405685504156960291778553001794985689024041854838005514794654081631094796534694044766349748495904275071951173647937232856616111804116106171100335425722328088198930104824135030873248213522021197095676032434413123901279433291021174869029511312427032894211990974653052430405572170066827559175410011846228862187027879871652275511417221619326230286817886118096858896193273400678395250344914081878410102296911472727083081080122600770142944782792478472377017857006068774204471201287298386708504119389367478203523900225043790443878694788759133495021448905600250848728364825951646617913799234748212684192817590537830643406256551083601092819458643449355989656075172771152294160206963856580164229450160188384362540642311329361679362689454841094787109081363609736795997592825676410054215150973880995050787878878024261744376380454426681809287656462246540914184337958534812979912693063570674893355875141823691684584213482641707176076273955385209937966701353355963593500048923348269281884670037027889387279132258433671024311509890363673254770819266646015390690453729005933185458206597658412050372060032443467140444740750422121316634222781185302031232422236428755789978335541835928146811586775640002841025330679471360964014673460437247800551224530827680626533968593144400380934998050467658358235029892967647292812570134361588652726144293063938268360297260327730817261228844365053497586778676037377001693313978654430060658418737326545701187190803050857005422833137415531388264271265992061689210437215847729361508372446463261522070976374414942622101303705239755919273874120826320366472335250458788178691092971633148181971016713183379486651604891325451019978326928333569043967535489523998223038535429974300785996135097035445278954544230555160724935714039784257113853452084292979513680629181137886091418269070434222207824251856926965439345907937655890040041984289526287665275548894998103252310301691500523004894545759621977320779435233578847937270115101844060139866978401556003405456048693514232596806180138154246713045732018200502219346222219297831063408131161318160998388665547813142644050208115416554838830733926052692916935905287531361832875079680089371417362114952198678262353947027325098464774293232415912362957684859299988435958542230929648324072443706258021567524993799918333153703014910629815300630742716121176347209404449997646122697683814137554998741407311009543697952749588925040515278951730170702049266040307760118075838326008971717016151445974056058409667449377220158349244307458754217703009771175099583371589369745885458293085799964800371123306938674744584803628219278842123906609739615481450745164376867579738166849932730396034425138694372015608277250944371195763726989626862114713700900420149070545440830811906692302160514392943388262637319978601061659106013718880026779066357053238427275393318406345987607924748831282494170584160660064185026000192783225243268192523076180116647648392697803883619935806135082620041280293449137452261853188504024345438976113425299889393337568020779747759515244180067813234231155423321131704984703598489344893698126030047494814301281467783030090909232534761982293940727753958717013371369983137213778917423525932253238118264621107760711874491876138102728645235630578966940549664004205916598334814413890509736794628828716498836435840777286323350458770933779541864100410130967345967220382923100575968446684707985259783540396321770653342563411919195302246590904451212148273649201515565935940389379884513119241396780175817094879651625423494341991675490023493872698618872945836238405209143969218992689645091125694856960688325664145375625188124977091069673887021073735476698419887358842296580580705872032082032167724923781607552207650156151057582505786500149679831067824415857488215378974658716875312075811907567005596288471020534645248306828626102420577640418557455492685866835612948319070909170820848118126230885318990866483411578308887899110549074963483417163877843732594690628730696137271854146225313410608684268400834613157879994340629100762615388301321482041494042216000583968967532724837030408340180801398608640488550193131341357223588094439837440932991764929724164419122222561543118394860665222720488683402896647964460075058744921877795026490218444660521640350298089012972345375119203563770376709071591176079755859539238487340933125222103597301315189639172991200911972935121833166698785355782955712577298810727163001065754976367467671037464899756262747627616743290086138576922330507898875691545675349939596364914655585367464895078156772406284211430551760842781824056615168071975860449561462458565800517878613020976550001234151385209500881742012846115042197831845098350148136628262479184157241659522031113077157783046480814801042173150628233858689821338958369357056204935969397386816198296977079741751922160430025347960636424535078352880154135608424989925017828401574522432174303925101945507394801227620022193907784128738667442465213596348950222967466871218353868326793040984130841302433040374490196261972168212263788472503358013148850959286308738340942254894481347734761384110406702425301875258324572524904932493200930050609921054445390166777617395447863805350789147758177351917698448072288037208748212590759732184801484503559103292429280989483574656330592860121154677651561368228044608415730713930504431780914578400481295646246498276817577978249366012962426924517792512279886735148347478681225433810736502644339614615232424009449852748675020746990902740976766068343552495167922449211903555909752172632531393041342607966232966551998286900368029867955822117043101686164044418386994110740179602274042408504666009084566739710010779937730544724548183332507157694479236957268489695365071007487944372056071114846386457406724838853500955280363082948683219330761478365526341524523041978837621539204716267998946315450583250776514590271212851615807166614983843769633147047569065250762342899739466856496747074488217307852529420816084071512019942496688206454762424361025583608065769415375245372136135137895033467797878644239463725809041642614217647939358766199486805790365424732825367993124263282466647964239702504496341981490266511864131083782177188630273729890546228501262507904381003081784526979036472615455865485260642789749882440194930284767345136125275627890731907713931116973533275003612598725018021212605314257052174571930932358030927125834335240179519615733674783369401596927247624902809241008624220490325694066635333490268167676180534096641593400992312789345853979826420692493565158748569843870544636882149240085134490553591602535927001869305202080994538142620122530853859449098545719988873060637099986277509593156879145165766453334146825987363978969360103361817597861297829935240757273725198491081199131842885498870549246507157208679777278466297305921308010280151453918811513032512740814914893735084049446212768771866393554100639454260917178216907608037756831266908874037667967510359240177108088788154936475792029534018226830541087545197009916185175148619727231451501070865923640665445450536619604526770138473006397333461544876871051638396625702293775293843266607730085263216126838598219207138050010771742416495429469862040724706633816136140019694625544142387539964358845198006142574379127604565866968239765474829882568631046724282370537368812175842797536691958774546819737231317292868369357549053143155151491007620955919760628687804638666660211232625375590051300209798934078816113545139168834978763932656826083878779390964873924736224794174087360455741074917685023208316181417035283333289545037704386655320655792381140116274724323291286240518324236691638252331007431399567039744289232299535658121254781634906492631180427079266799163530567860837685737756077106871910679032654200872139017147767022420427666251837788618791306067760351103135379069938927077127635705356545572241169169220765332494848813202973137491066535679177262948833747709811341292649585088833039805073599929217768553718157039092182237085034227315047393652734404377867531618649265702116860784436595327800612621337498259061952740702143436329537060591285528350799376380075555384730892243509981719283814197256175849138164354130928187578749961119858337120426570990248871610095900491727398986654395666232459493204212100329310611688030942113609930216038569358223229157529547637002994872729171156633267492479258426913113655654754095855705043937154311020511730118458068912549798989425717629489996013400710321605934904781412160917990567666966596980824190535917406661179612238603964435530656489601560249624057466583160990413906373021288514701670397624108934226708830613853508146403063181376346749087415457692653733287648639387739827278939471675678055511948263150975344587466214938721988393216012544322887250472986814068293803957533406654239268546812690158547746886619367241886207444738038065848562767441641169804701183604018516356322666415943496779863267214000251884691648074392343187946741199833075791587373237854150324198930474077936914532908196947210342144144128540502688735597727330821710853298947590244984164192248058991765956084154091202186996642685283271151270392428261750324322362321862175837482653542648302209990996183788160829477528135433066249978826459773808988196501805207281241885445925661510614339604333684985838998470241175929803939961424869875277278149047927348320410676565920706733547216090933900832307362809387874468956563745857425477230938582188195968353304337236560222159804340323166110613545169547966643383803467636867439635731094411476748072334531564965203925794316853748891157828661529013898032010866878542734601038028720383225238575148760181104576200268791332661954297549134106949169820683811405087483191905302434604992046405871359013337829940336933201831886010249344932592889672446460374344774264026544984730416041876741802663081491269002456877818739217199183797082590164373679331695397025516705751745993543655463343299238514571170882581109524489357495525819143766559375509224692327179826744168605363532677943669047312256781346643643636413279228067946264976769594493887537301483544625328613686631304122229670138521831182029201973500872392527682631580670539899161175679170191092012680101721268898245828899062548131931411597493332080104192678653406423319069865068349444706708120674440128060967309042335459775836482958789667470763328605931658129948614165684913957764901154251119943532275354499892561230871689720261561934172994159448360974220441605327568943518719635286194012039686740348001235225351128704833781537237650930659804228629509653169618277617476406612135145279883438428219444679577546931946256586608294251623334617522176609086979481538253308434543150855740701066864378075594083845617658563667977149675912879387492179430700987358399598881376655067675738577295987926038276794570639929111005456832919697260113232095938829264724059549833278269762644576343722021506285761974225462186734779649902868653881770741885929119901248788466983059086070688949854832982104890679060427537529602147002336892143281942630509801996105181415580142949646857372380963868877047555120070300403229179399370099766726225076565465319045621555799287827693110457253791165788013674576544914187594298262322031318719252503058393809298211455251292163335054065260000729952776122452138101667908118467244729079965092428958687020342544924874625242831951772453424851066009338189421533390436052833205901214944476686104057756975960127497864655194636308315008044684930769101797453443093130226727884541575556678464121088234921233873432034383671328680723804787434461187271972049242442776859644314981263587049166516862544506056616373800562980239245885341616317398382357333753669268586183172447100952196912417580348090413557110484908099032674871222643208264816566851196441956311097545825128713487424910654143362182371030310961553989356065765303693270586695239096216595112361742696498602287339378665515043959872527406343512426823186501173888743108230000008668631939139859191419609276557032371786121331398969589124604143989894180739617027958451863782824940829149983994117070266317402362714426869122272796153921183461754069156040494501562205084336817168934059225161022514533918550014737191905752538508106577808464638414261871321637010917479194197078156160319798494586484132380208861873406459930407046723501663530141819528409317628580086247242861949487947401638883590936449918932323506585356563749316346343943154341970913651173920233094687775066263336134357980522417830621700815599191222472210092477610016496988230342103457244446264427394283253071691633691696128797415951970033752162419950878929703184524747240155873214469991768107971556799849743771089325713655520332109797658638924811532672504927378501917715172644060269520427548873277511637654319101952459186318992102834636978115319095739812281189289337220044715427642686952933924888294131351658585929800912631898335497147417620077432103442601488720308910778505230343476374824004656371936218759992085601440530803941908240855492824835807248895526416663081331784719282670339537113640269980342583413065034030579168876396051906406317018363779093918070303185402422040413121364425667304781376377533247153130410261982939205345528111049945700965312579826559150520217790364499098122405843784608314471297891752150725418387650459190712918370589810954275593807712329996994345371763862423196010583688282259915982576362417139224834419698089986268693248173512183223927354110918880116813202202102150606129242194392613921231610293423001687684115154143306290536571367864263647924369254066870326793866541382141277894761690827450594635373993059170910134765530819548207396769247234901331928371829434653086862295704843454006180117767942165596340035154261236266106336327481641879774129215186784698169484740558859754163243096944599928186373379322684205188860605122173106677835309883826930296359177569080408483724070523156379876946532982517250891678285516930426343930941686828856247005397754848996202206163332581736616223774912453175545056883624746195444557320263384052150584823151341651700566467179185435617655939268250714644073597864711542808135056477567407374336183128702163128027440647016050825013663147733935053856835965558534304302644687430355743189078584639771046068249573799704557635829941431325768162965778288265044473478049842818327424309242324585042158250127246713792035973713636028623574328644695756169863371636039884923390299714571981848812342442494552481426734082390076818027089871110465124247550274973377868452526346448323237049138259467541981543253098629598396917467284049188880315649934777143703996732437414392362536859077186736507316599659344746461326004911504889921964775040487363514222294665461959827115835613630299047618351256901213849340080969540872686721220509879053766767253536975012678655139801417866555050971123018080127945448634049807270469804615696504123196876370652157500313559471891205222047226179890241692095632504465918435934328486284314736169988369427469209260723949530466697601627061318325869638547148576021168319984878143164692954929836566901018887280666456131498505086030261033358124968231347992301871611624137042256225746624037199391986888477177892859806875567562093857452210759696218360994135615942065989888721695667610828570063571479306582765247387007578993645674129425230461939873370019644086370289442612322272507304754208760941090179547203642272137144008328981389969556864887038369135480964513151268056838564947061749402306332605049883110595408646226369360976548798949413956347013496980781495205722110156409561826652395154995161615998765696221446251079221796756230303783639286155231144695866506550944212675355990797977354859522591615921882034809770202643873943631489298908323922228406060578908027930627849653832123755508663552243650774865690705047813954186636509414722516957547392324908593205738404767175476794248214899176045096729688393640886983431361721664376742122547774091644742620649261289785688964894255944776904098311940939276199590083013516341170954037972206168757476724695694025944828473867685701633028267328149465635610058733626423133383703969253369946843372912158019718859070614228505172713095521337851565876246136155543484812757193497547017451227306332459947410188712187385303856258508674992592553409919707780380866342024066015957906970483805984823023350535995535136944178025200254277251590175341725598286456022717206755217304098368418705684036418486172628778564643608479813926958178545465544978892634323694809549256972686202618789533585757040754008753845077249517620690715538916528569360023641302243585744710912122401700051245656599638347880811902232607376398339945859226295550861116049854102574915440328976988124829769813979564212017401296045678670964587915444430578264884570834942190195467421738584420422413393906928029720962646405948102942466395292218453777558996736956175713421496876097394304661037768789485000868944950006136036282666852164260733606155725301227456761492493030078698121238237625017940435082943422351473675777296792408581994947883133977695218537107790365182714211810656412085183164767764708317166422759083911673851591091749700212410429067952435375758392420973555576940691506942059717045222034881558810782755736050075230466543900602761579813164532866546541935215586428710233196898878299388369808488696635831641508577694346572107358572502117194518548238358106020191615353370994675343225957763369769109946033316924665217906610610007191362784390953981869689376843470556695076702599531093698547506798790170052138009376904029425282783547518579986922971793549579856571287777383192464725071706224798903995112004421730239167793295801123006660857474385705750991454215466192572756019359828612952057910117493246849017425832103591090204912408834569915238795908221091155193405841818519143465751493719040430734850493785553697260213141574098770961679430707911717679593218504425222920730200307149559680953810786033489767761573081035709951415692427974286742717200391824595983313558942686741570620942841283031584850672174679228073156483211923860338759319544260417597958005432770224758833677005222151337551907448786124403469104018820119292424095636451661308345431299755605786839924078895481259985196169890902233573225128239382556531011493999914322705760360702061716562306694482266683542977656366449563122732295400559008963788754622979722281417376968385857435580218497114744208039328101522704087947722657188118076194864850073150114346565169014111906280743246161019430881290815992848425934832837836601526529951590057107326659643824401558556804615918544521151636200009476852093102569985773784645496576591568588884914577561632867736136666228744095713789081510809739763802687377799966881568896345054784833752359477050791351257359159390440701728108670763104414776859804933834323583220401047149880445418726344481121864208697075878325816357650647337750058089049905342641469454037113935142859096209932679891258881374008591014480688460414415829458113552129251809295300760328182099105320616816567007662328264762138590982954224495557865785726782814691899832380188135296708184249700006094706305350378105305056263107016192725155686081875363957582493524858504766798801144625579471823514530371654896374460926519661110373092299075384002879023177328537243986303369942923637814921814668722107556138092007479885017323126787508414279511870490333176546688399161158213862638416164320062437459638655711471911430110385126990188196498157859745453343814804209814224172201355214058264988835786244228149561344381665037017531955548038702776151281130184758944327866854354039121918352273580510083548290442500284063197403972173403902615740198924108117485291000755616412829252052831766424996730272892189158063493466816960311055481299192908818469184569066541740919454015047602198476074478612407233963986370288822509993914988323671654616429828900599419075479871133974878708809900527681344325382195611886958220330141371302883888349657537258732889901269225296748061020210983577110864505416233663307857002832087657286133847148243419418328495645466810423262214641795100256391179688104762640630411886166631404754532226681638472783236976454511350686759385682266432891475957851694265939663273950488436201502963092042942323171066102011971547337996484526538953540304781410075626499371235754488932270894038000466552106190096107777971601340667489498034886388276301523316556660841164175226379566259902220032369138249064738497803060367198533965461872728275545762301276676221820946958061267056862482261996052762662206943740895556833543104441539406845609856149370782045203465123782433255678225635231620074679160438736295573688989849830170120062955815752903931852293052484863776924626420049986571262322087250643842139109300020341432330889610047201982916213365627154109662137462878893290547296310296071541702805256514630457175555039252134316088315813638067740542025951229793579614272976932775159397691633135940808605742051969747636906556294957777196551778679938410857112532783631767803812663380293349187445243085740468497267220722150109344751935212307581438965165394101380166093567313702728665136476945818810819190670640240330932150246563140104407400117311707792639901441524215964602470922579764581294516478215239874632879814629367394298747682721496528053181949412031404199369200904401680830642059071282318264226901127819899190009183216878035713324037002631518743704982008467884846171250597562574335627713406617934268285345608668359191117127213969655208985819745574002262421517656580449877745425263231437264844267243696210028399280183310603194906224913398295010290223280120507105392071191881003522923225181200626844341842110322536196480867509060297032822667450994262368390683585917392707662868588873741973509520406839942566477373460086856527974767537287677056344439718675485804199556886324256509498807873206839951755449781720705027744231773488060094786085958616612364038660313801818059787496839579871176240018309224779613147119502517332843957069183253420937613394577368400146795387908535573498730669557290187550341836952350119183744898235215796160778687267227870054768360030824765711432749613787603605466024293016680377999054554667081758736733818591826993647340699904340142026643853587421623454860462315939766220408405628476907451390446932347038624373352768293033672567909859573547287702600262148646212534506306779541880790592767334649633690518976589748661863922383914447544731921515760989739698115003662360808342596339136033363297138355146526890501248766223005920380977272669913334250791042975182605940299787907556234117610113298704491844077991791739998851761916090455903226352116491193456313458263550624918007721046526031296850098132177157877557414682410740381462732947469088255039150275200898393415890209014513138294062967824164703480280627811948450448761088341761317940584998863447087457026523583004290601172839664693262680846275780864040592523623264522357841877795455914993330806954957901614019374214033473392341574403542700699487854031136155278672225356351679006062613797563922756504437205325127862102287389574132206402293875239035802426599538092722894913004100700535616990406272562566626785106061592156709160532372674853948176943294697208435376740636829265709461676862473256273242191674888457804352382047990457560475580628517089723409299163845772229259840857867190768388717641513448249615119182592074926467653312966865260589752596717024179031360740957098976803087030926919573825440206490217181553908606780456636018184258797152610436693465348495197653754324627792510345086687288913360021843679905306829922330211218294522319943605233250245640024368082689326974675161101519038471825400348465347084322321291122580556126896618602983428600496045109615944818007111568274941981306369644087859174686551660596014992929856564842739229058789614484291741819640264495314220518466339835798454470787847403283723805496540896859129444414647496729892494845562487619622391125021925359572124244870490345426093136144689845996870101225063769278043287133185434789368878208835881906707727701398418346135804361240960768513968921924777907859540522085145431308609664031073744967221491824217187001651366008451934478856867136791174950316207420339970249858863993444768573662185575401735090580438589538478952054512567419420826936428477703548013080963657957291962075918470089689622304034692688294127946797309376316624992199265132931440633454399011955580338309593467970981342169327442814190544291936447595977678705607032593191717152361776829388061080343923531757368318882622345466130715683559090942384937802576059926833121777137678106350988341788946519723454043429250483375088972355157906847019221354919782924734743591386144799798898869954920153157447445975172473959094621475787237579205374214858246571563139657023527061554039971606216366935788269479372204723657990683046351893832252179070081352523234199772498423740155263285879007498301428834030809215093824234146461289315792709271150811535193158024395231893343962730803291232039321167401165573277507331156152005332759520108770150525701392672632310914623209731099961805966734592962407619257247294115372540293934857656869297146840641120167072530503496532237492374711401120871691056048438440420301675188772732663368360405580645104349714610028892737029006594647707904387248982674570385317716216051792460501602616044422119526198682783017548522662631025447848812317792537326936847823938702928335289362097519487395519053434339035587598519756196612961412171064516708908823674584277748038595233753829117837052071970828500795605295771867938521354630697997676165649011031589206638783048674691222431435495277181330441469662418858435088586916112900395379711174956764898362558278078048098128856701795217099268198379093277578144155592138259090980172798600175551703107978637081862140153234443618606781603312529494770439719238808315578445768193611111761408459640071178631144478878630507159952465413306236230157850511471423250410537721945126067985674549152497142388992657188255249941573207414118987854211054528481318443766093977446180396508973693057946020010123790157493620024228339964069457295112673181254231104422557906338140573561472325409106915001784761003984958840986819922423374604886680798387450534603975345850501474080117397270618773427925943626676006022019567938146266026273733687427007060446805963321049482600499490715184649518004412549939187093887516792681865712694989155065439012270922010057157976498091869379266186388615650216187556946349836852158330202978384178520695903288121329600507903661956846693713081001480395956071198904954388018384302631207275624526819373153907593720188776584577345586035967920345015611284629467850521880324573933167384084089665505176115767147723845389430194167409283446792991595604714835325818883911363802637679691900701621430782672569646064918098821900227673577000290038109953554486074666267622540929659588979634486343134516198938656980468486135265628409679057579156459974105487701393028428968869355561310747080686848677909763735328391327680871631562294934738536184757684583720046662344865156014865457252066793443027678836975697809468460657361355603767714709812148199403206483499875265077723786883571595685377807160564316396326112683090141866488023542406935645043125240469941585198724881160813761843465372447202891525690156676425981368962312066960723858285211666379396022820593035635254539831653249305897867089352209829895408811669367034805651071515621088640123529676181631888625762279605328739991038010426875243793294259034964953985722016908453626942949320909780198069116597583720566506557801897137447924305559921688704996530509325909579180687391065185386652950623306805816260541669467423730363847192166364978567128814429413041031270763387555891214313009027912602753295030992690239689981639717939419103170203494620864057148076189137195377899901132755438053136030308742392027646807855239956825167109615692758878603335222370908014668001918699096713604456083918408100505750884786831460687881542198335028653370170727549918640571715681639229740284234870993990877391931902336735358758403149832279096081557479633989703398756570447197398685187708934507021246397296456128795170421432783592680481957037006960326908439102824602090686660516331591903778286723234150490012987001886502167419247401191167177033089910753067418407125927703033269289635324303958733952277869629670316856203862851031700869866167743918723270470409301034393418382611927143885421014497528541654482330889771557148224449593490817401336817273745632120966663179810869589080356606634305658906382022904636621202662433873928041854779184313748597915596404445462208595191672590867786521955006364659005189339057939276490852151173191266349324468711529499983528270663520545829693269615966038088626961407045294275346036729546191461857629776307683285154627696771344939869996798464082069397678450068035944492460520827663338614951079257314705166081076217649189912785502120600534697001824405444374613032164805074921586480553544747238790727057895562000748583438141813101611331771888690059802836381620580483035225829100962943699870587111106280295294798107947735251911244468920024419864968768289077053102146547136473352878148704539990940465896632915326842377079070361049855615904318184066584341499241701028815481386346211997086354118283158376645251716760143683436285588777095041902427740263086480072702890844809541335072790482151939712727306834517950716174178305672694192011210260389522214302871883317719720032717788830588390191345972411748701571654345956634472010162175137975558150368410809596562554564188341872633982131327949756065300896855361006669992451347259760284993089514694246435120465578579419309831981152440475096596380439179833743383063611240991166318442154224032649507587072209623597300481273228661014971228670982378965396060193231276120949560979937833442148352280343363718814527799260720330309164985280921859529377903906895517563586620249248784175984386220354793756491958043239644440705518536277962210651052394885511118416545309109510310555982121002228596522055918715181679250374757088145043307913122487218019654925484793123668397572151535311544035190515856403624036858818790312156121031338997961941951179823775609278493434582187852982269598146328932671209944192844178641109218990122462826671408016512530842699553287775038660455522708429525389585955259112663106370006489930244379897386136629368419415913405530549907585495662271064882178301193610518472690860317637219413063112166929106930479687302003382087953570078995193072963304614307256623191035851287845618275434769921391246556297703377745068787766820535865614917610097115012718693295582277190339924400988193705719138093049575225668456955229770512881714915326979403240075739691121237772978593283019699792898604777312362134323779495482440967033395895588253358166074089376542002442543948211111817902622743600564451573011263094509473259309760484282408413525732775545594494912191362097312052458682255216250848994378954685828077437930406315204889105217340564962193494277458613120118818574482525767800894048096409122676494910313838600238914996708410828965028556364080929980026368780283009985146574042171613371806876561091383954847503415629016687523590404848616928176669518548489012460712719009950789458959452493898796049733282364748002050534091092627888640489265203692313017901895501837258246561097031402553972103429374087844093588250538242338718186769202890247858317624457757053961685515838035598543468304509969346877718613322202916534247201188716362134755051557750731376280159905063262318371437085292536281163951185625971817842854890864663246043942559179554267824374984549283366274272158796020198630593317175502748907147196793340087952527796102129736795787080606982499593456732257208979980152264974142467554182732368940957518616760660911822099784370795838604282306789276055566393472266135624127506714586914844848340240246625409043744060497639536953813635245177847616477157985848338708262100432047494048060528944895616429358396373669575672313033427251263869406363196918752834079398830857189947541950405204937681514810271886890821798782442692265257592129869454040365408161435642798245849479927280920622825126417086581816999302551459819103782045146291601036025825802744465960482656107689934827514732781579365624337786403340587222862330473374822601837390108243228736675367316331335041802988309051197603596187934477925700996244710775546317495523676689815039998007825960911807560325413228776744285590899940216531231589388177088379212332546830548565052480096936352648575637864831987842369860077622386478918178595089387978763107354907913205239744191606328753759374901655793144721489027590115234296756083393660918179501537492835529836261584466184234240796139422178213459220531786635774631767474941898462938753109663682247555887785106476996895744793312704542163421233213679855725160247690178132639729510553774150466543899654613962004203464748030765125873389339305540450882927721729320583548012959170960965036992085303922963276095995943726281689673405553538725373479509904385028637060556402761980117245669641125353580906233620018082373222289084974271579906301459813681623774611036373027465069997390733990773442669861607401101802174220505491129499090471175602189230733135597975288903220954547178616555994486226836781608204116656482135272008724942504750986521590273781801753679448594273899991155606219400218891149389938249299161986240656885261648639884952727324554568389617842409115223249867972493388146161315165076973624272891377253784755924071471966342443794829621788612108858006189960247653697873918818926180766924463288080629513276291558807976272114929916279763748119114569929400330772542734276943051434637521591517388411279101621692256035034731690846355129603382176984029707578054020050682493977029222432403020307257254912832763728099976823519056970477825867994151157856672310223453623461693382946994275963485643907063377470929758195963210315451882695388674645542006045773603414494937187004089519444037291626846169550080129263297054921486102684065373570948172680602067054689476420730019384929295529307627921511790668089523126722613965195917125406371511785227040419965111394862252894634233272792880937404774055458460303664692779848519722827069763162015603451170905646891095795059137946828324473792620365991829963680738295984125123993996866277718961621728706426814963534935939859786404498281246452354341864764580351572898153775029233645748239410515592280529068767373387032114367797341003382908266613389389044990744057085571290223965985702713112283976548772900558050368344022604209476008940917953116833059672772976578611571325006334945229052351439505230618067570629993521484890404440854262013775981560210099011665624753399408604256837928281261767017907085065894288327548468189786866477723471096644787423088445493902765050811996827406739808547689966610724732360838263691288729013097766054288391285296050725088186249180829478065698275035929537887047129508578581948341630202415720562275601352790117841854718061227696059845276172492641409522086339317926547570822397548950430889089450717329148685553010888791437688700933618177781259966270834169928848112630361821130681990979377007239983579771471673296979672382921699825124017315222592175564779699571330042714714246748068701449066172259837211986107302662881956031557034965514807346912581246248755062438552073111557401271030606684077360630702278422501129142755010310737535284988007112186218203582768140443219429357790186382843488156292237744545528936241911429926756764397124898961365527513023186466371064671426806201552553353148976729810903371352995052922925023230963011661418421985638498825772928601689634645390685944423721662681256109119925656618197442255604065710380001884683372620650325388596581608667854371316525233231753106757402039205695596411045777355023113811247820059549361629417583160420579377571237405052828814735329627467363188617741313271329421086154670673993858258820134733319787336149059553106619373062822952265680921041621508983501989422437752439257684134604247195438677511587634190455607521656360084692062283852129104651988065926721070474953763371640698352057577620616809896435963187181104204038829024423355710175664101901903699199451024319874500659033030123610153053739576916119992034220768781701075989615330136479061571181089363158338224164752071657669986448134050145512832879964613081094182340501798510211155638874818005046500657471472751785911480678494780722568685931037980241355299898364128902048050513962074761290219414259402089462339659942171901209956080821592850286778033033553353942001710541787507152894183120551370909416160418444911794614957818421251675297311624398166117978510812530982832352375015614366586737528394689248079515134675651552887663453679617034384014460272573835098028766985396571790644044650944486929317166148894730104281542333196743270574144163330885294258009868830547435615464897020502070859984171117261350299479228677558646110195058464265651702393249657692012410570209340080783816320998257447279374311039159710982024947056557870165844076210596064790426098762274790420463431707364886938845291268491016653171234059016404631538327995066857485396611420484177060471145600886831765858647957890723712130699895886567250478607402272883677492478861308407059381538298732014646388672559440370265782700778909699882059359824246450350877735279867491102083564331393734375027523794174692953872783559687709494398036900666133005004335263617177685911312338046179935009481387546079758796882810193653405274135921798267979556682851142846370498467352059609125002928953039811096859714458435995156070298025801579083475753196673693940012114585676331978998013649089031598817469286451535755576879493319659987794820741676122968717546437033932409003319309650653618059520734368801556102432341228910954491770031363191825086229885945902075044399939023429160718772818164464041659789986446287219060502490513375607788408220014300445667923435144278243586104399642043845450750462071583827225068011878083534001235154458635549610895248136343122316032250897237937383092229523811558793583824300329409740449377987879338302084493964843980608558028450647451056290810451498461640297671373276522794226308668489365901667840008720976113200363107494833024787679437670583656680906716409649951757486276282555819368379027729534123330139585824271445792988901331476489358126851560239974921773554092641424157772801224744043453764543580764005073939956371973309984056432174006778835994828474733140515656860536457790197664822859012052582041419749453363982552377156165564601939216566830620975901962799113558939529537655897975395383592469394140790036141102738142491135823278658238432090808042980836417173526729476937569927876437467429084798407788858264808602438180085476218566270366623744156996588456871506285787716053961050648630423156134970883372426341659283545258289780037249905518384867436506421410322531066162786889438952831558633517502284185894809455635007266598393216724137662934812775093605070128505894832346459921050927302871612806050899910982663439487033424118021257099076471420521789497793699183761887433297267674818955935552344017179319449419567801572852546542144038875743936138207624560383078701153119639999755841871113232281820883807925047145172356513219284142730513678574351272394521652495198716600153657990629252350500068802966116366241566450861845346980462385814576413526657092987396641892780502328844736656201591753285337702605017738725999745378997058331295889820849392549317376894464048277441107426692554957461948601559047715296795568403332336463979471119102077019646945276147107880172098575534097829209340206373857005172887432980677437716139746397212142585832382104792376630049820519367271797105492610286197750679607657390536691992499025972388376296007979250769833797487775764437433204443728022777947555781508807807665860034048637225803258928925666988787860659064179541031637220169689062741534102217613596412275347729390803888537938014764348645557098023376642364907009896075148060682811550468274441300697702189918135476464434941872190646224326595298007130636783317984211652101745081321917867162696426515848794126349110029400535985179178547908213225240344021320701670793861453555861805169081430679867327507657712849163674227920559527851308982527773886901332269059458737524086589256922024110529792849629376017570775257989764750820932661008703473539320415699780407015808255201750122305058307228751577269779041651526218412068845688044374658196984815011343264341820129961784874609671136749060606519079607903380274109437190041668559847890058855718158207271864672444744574186850902610874689669562528723105487623647935024574665065970071630401166056004061589797632070950278109637149887920907292244515729984431227739570966489333025909136992722330451109062784031224494728625180502749422396786660645745578892954683517458475145906897359915522817125226070291656329159070346377800062229389415529564753828059870361049235369857781395526411139805138982894093894949339382119700466712197944744081679622240536704218519786220124964639630068026419030945665912839621934372377754386165888989399802695012662301854857312811426495828146849381964918227033427257125059120290679723750834993909204570745630164372574291207063288663480485580038218999790923320880348658126666133339876715715043143937371707970008358434489765816842371356611182034121501017554734329973976483237480861737224828833705193842339460927496906302794114048158000722699464144123352479294047527444821545048953657540307990195606137516540069155900146612988422562466842951338782887665880385922610053664347159093980155027412961954203088140317919165411336041763665309918153371834503787979563883935016321540146444153266776040769681841807904533456002723895104978928557813984722807258589441397153659781174889042514599984687671301001677420447703828153535564236442772566930708214788481204626986439911526226784087962612806016199526469462073645407565067450989005633843392798445724333442363252257333962077650563980372464943319979735366455862683618260875479586163494925589809635420325539138059479468747410013410003575131587246094536036622817559095686144465140724205309645137976732478641150611490603408445804551608778254872652135997843822767841981903492719970393120922969949027537877809491644789098387497024550594100026734961002526979428504245907568735487675968009659936736769159464708194342832735991288688901582579981632917515459062272490355026637590333480348985908891058619636024786587963924489140319449331413994982079543384826152313599316963768091857754407368224383938082290856814755346065096892577670431134895615058203665047630920037370416807403471102701251135098808671138394941672875391384304510858786256405987435986454736998276911441937472123331187778224314714769430180030323580426848605690636376645185797240187220252911781279486893884661950916388723016347986784312119175530357980757885210669296083883315290361516732126374276641620435980699549233199735927637309247061342722779984692246861676553084002149406721849713835561917310049774925568477293073738786930654225275189117591086601817170956848709278464215792749503274861509118513308841605765093731701955674631154166826058995438238425751388776187454988860465945097185185846988579267297223136000972258576039775185570228139967754924831673848959878483304036967786993335676632825882668644791474459539026623095677749528600445135520572723076371215214036996686629647260575900838046238701832499214745332851131543216514137579784201667529530267200672888721318929907803151479715626595277140826515823751659044997574111004192997760004232704536781770345233438185526092280336081512365660674257220514467335555673305751221143003695694561816393777098780641281661361644648590789263729241810071580739422582320203779131309053161977886319199152853808283416221255926355113520454816568819688464500114458549013862340257574012872044931634475982052196232855329523304744567558146624592094366287074962910118459808860889084958702551056833079140333410681028447946680105703252744369545691487763801529995720887351622739931568744603076367951567381379613660383401050376383834377477414984416878242151371795978069148748398134514501605459281466945619943958715022447629184622011642489479108121664232544631287255438679228733962331154970628086046033382563511699579574438079101387768182539619256848158683924552485248838691413583451229934107927737822434799797831934711155652533401365212467650590925302099218487426203018300978148244364675481105470330380829859699269411495827560566881763043599051417572661231996185982645175589653008264930815068376690494189082268549326564401071172783152845497588021416625942169079315026285125660410541886001900839514136715776916456804228872540425419022940687946469063818967306871909389927565864192508025491124537479901520431076251021176071128938554526431157593196264577773527756532588726408100033838792428284144803205635583794282764708673635211282848743810013537142724519697916784748931523115709171317431101133415669839562367914342262733814926924191837068968855511063219604338451678830993203407660003971694093666941378030848179076147672930710069252547793433530116546129873472140432842877477485360021859134254328553261726475921012778201369664686546883141686623725093659261459366883975781890757089475424736406705625855239255319284509684426168004735045354007584953030183622923870343841046374584130389114072114978504110691381126377709713405721103927224137677615257932631488212299377885662096232389600872222276770588091954607724551734941718638900840782252143183791683804366880386120115602346744213128067582764912758911254950696785847271684244540904096324210000263603433459111944030367829504054367755128485244662198529980447391512962650854073076965222402649335831793016162413827513707901408295342060273336426789606021828205430071651968399640776893360908541699516442241711210413461277178436438520451746044441997606791585037214111697757247649939418673073940595956713679628960082473221108581926255945330710509476167412935446453740631197721174141229691363157542888605994592369267473146864977744029866085054476956930971341643061081995810831694523349763137240051958377888128227661497084418095344396266980900365418078232763976118089117996840997981524845616059419413439968284744634797079015429581180738147527179368076051907368569794190729713155842995984568307856348090863961219685599099949376284755260097324955241413431819847346458968075837701253567784433528798382291980457971537537306829551092195807258520900181341352458481567451578421186489688313622220838988843876060346669115807900994244501056359069663310625473033090245559066597947688321134305804898878220582742079597203903867562007750734403937644035955849161214152880675546064565534208747074431364262529402671005388852300701517081747627277198322226582193803827457742485238777280731201037037404164768562736431916964461003088107844259329952654223033625390996584263918888273955280497830461241755165569086473186237808831727395209866375530547668923530504205396183402103975911912232786538443514411577881816979101780114647670165607006634607795624351155667619928258448322477322215037697476957797070884149162056090705299407708206005247517804123747914817268266634833082475373627027311207716018521149468231406730538219692390217671753586168514211531716663642823879873275197214708900461799182738359256644701178725901716024479244914386166213937564255116434946912195732092295088515436047769395472923228276570702941750856342515522741052045227854197359408490092870410974402776614628349476232981865539354553254070280900212562605290339119520983407877087665361498366730239067975623469356119031568404722441154763928143571001230462374939381208723556855526439715440940104082340305751210039710487989112730033436394601834621169143524070565455945793240166422323261311690762122871821441523760456572000615842884475961818161332642614429742557077124546548450879932878718019358858691554358917059627038134165905973579960745362619436078863338604150086622117074171371897869205299834709400088907696053306790577621073780253825196315669508235312259457998816548410249834088027503709345871655456784186359807366890956269791465802964197167860552455142300141816130065571672034194795619714269294413436821493318445891509207965648020689002421948938796156567740354908111172019940571684321630053891072872245622678249957681964052254637222933074196066351650886913692815900720344203959513152183292541793888192552846009133914372461555380567226527824243780829925334717902622489277001749045163542284231326701126205960229374717308547454673902041057627973852000154369227839425671516869361683569268080677386511425053244127844816815553734036373085354377591991783269625331438532371487927057818534656685842603297109835720440224961871249831445407999259244986159839802031946262013000205850208432238068141114644143250722476885782834465973401899918324165345037873560744640559747797229788828826212620358494154632558156241174744344633893593053490017523421559515574944511855845386227743207221432352776779980317193844306304332526771065679628527109247659926217483186589781615898477247969059217661705748318847954956495752004109441428285185726770822096985016882989522567133180614691618325113472941700049200052658767114593456394765110166344562355170812512202553730693256237319481049954751118514461717589379440348282252804739921787200361980861891003815662493278406719045515501866462262205340619024974574958668426924923077643814671494468171734664788581040364549997008397395898083114963333209451065393788737955543652860294695224758235375586160710735456521439680850818007647367536468700113775562024776698873108677640519887179806379093755854312410470237724743967595568529822748199270391309301155629724840281111862708104250878631721485614026122163012580222512663241420936662599805670444106225492437874559588718397141575025707268515699785775888660633512648348425644816030080187162301401002804145596086999545846441479871577238964703041269031792837900775409815106511315085223703282133596103069390695083086028104183786864368844199222959318103493760426131655891166020281069347841113320640194878548732626590402335278833033751270232663591732577894751353761054899893912691459101717567541208863051235398620656904029335220105012940776936296130203651903121082642306804978663248735788401275446333086645320241704968034419391944144391273628845827875869405850173315765919009649789862782294480134409060670582416301237649463037675771873990365786315501530645702949155707367639995396218832714297000316159841595900666410661983802217733996291154672069033006879560794269837030568026174018128204564880738822399810418326087168710201132226332885809746785957399580554750777242341447079725629821385185794740560270964413622850357044429044127837041350112622738252709983536653344745141952581704142059931996025139573892803206824743668642438039134280426091691107602753946734139954623673187561319652782229580488300836236434405329842191198386441514817871276944339561044409150780646450165989130694771545552117397655515431439807435961895281546559556624179801472471524680923102191947192378774088956034495162921215894461460529417735291194840477130939157115195540365650241455972248344412379869095494506691787584522970429187680089183788298838968063863989723193821929518747571657021908440478486280647545418944881611091226579676432979462385024816882823585809579085235200805738857956462082857574384714166119875906587692139201173357961315920709778278673125603628111300678241783675046926239145958650492362867733136873416265363500890527002850518968442198431077710706690699087846242670012559724255299628629255102079951553365450835836314891342004154547161978957201338825485624022042260481575869797206621010252581967352560549074690772715774908230857075451453243512874819944670258359809340548810989175783697062563546266417224920711345346169330002925341004967426347445206845056942770368712224381611375522901163251627669127734910316395735261756431689442224384918503260140643506115977183193970463767944463031877068007343101075138976307492452473624537145417709767789656891622291199509539661209367962623872775277904522044829971125019509687756772541674479850381772886385600978534831966674461623323378641153247721048558671054114443312587193287972339948677581033604164445893165264205846317810804579589485231008920420063975847244013519362554760553385035530842167312528900489584583254563606696886901359700459906799350288513268770865490128237232131624806190734927930920415504616065071189949689232123012602061462195894828451337543441942389531039920720976262042214902568766091178283795289823709895366798427718205704672581988123178444436377945922668075352312132374878988053317193541372133876948369879669305946302670930626398003566960943972398317043622047346981339279763021815575269352571252683458674414531866819919792246373666976938648378039427630862765695373182113622771171652116450017947412536202975436971765888569537974446911317203302032198838364084230829275372293553147721368338746807192266174635416821607232154470826195231101831099746141565665643330444819531438836034378502877170029499785072705110674051041567734016800975885910177472526176469661945804586795351599468043302836233359948886522179205926370517868419983638795175637045964946283214063270625827723938165286435173979227384598342830754755985574813870894128453227478949544685251398492792729473475277117427211874657596250487663007101309983716421829694162734242446409613500256482420136422401556469872934792407131363998401994284076938954542563573128169617170887126880027268054554283437542943634836810469284330804135248860922281605185179510045977852346548419577302501215604667669051026348478472504991673768587784011317948101950816122579750554874388161369856268715433209896818669223524568456302172274371204787783843703411886681464828720556092816432360428312467086423721479907213379824574995768564624136177250927191746652007248383829516039922122894152692681223561038749978547906969854528499383795709238525691904120444386270450322995875828456526170185585366825072811056448741443404321878379568160732533128404275607893375300873967317175211085181246161449527492432516147015618121389397338721799836019982109505300075002557360117367801475661450883603835023451449913854632889322332737833805154594010914460922141563206235276548111849411508139802201515904206256489822190498036430265847786190156557775353710157359539050367673218502816226098838223965731786464262852667019399016995747147650786608800825268094012898246963329102369292002135253024426026165407458036496149339639422579116533708859242747166107387699514929597815391444618406453927194193048932438177419543860436040521380464600007834717045796749769027210267766669131631193012294881783872170427743955272385646319434310406737046178915724829526182945729276571414976142021351166719406197554500409990135836360224856354594577739816368697191335079424117248897894774530651099524877320394894828680419471579548015619031996423713181081290896856149312463703407422946391181097710641839237713618390409665855229693030806682701046789834904395336086587519029488888767206694163850758469905641133483487280996726816670718603942715884353037202995083376375890729467204886932205614317972102122423707399234773589996454784848667578623627034693887282966475738282808247776864140200562458562395757080120925468105439875521206922356386384935401962582807051678470368274671612799557657075385166305350584745457756290607449826567226974435649319748561368931046608681887634954319642465844998448237782385110780735135761150367387176859089179555952036153196214260167614756442396934834196384008173047624472010296543682910297859022131527447109405571258672353424768999742403251442468736864083661386185957822847068748739457100964664798971203335970709952484589588622496412582196913380861022709378907295869667261371137941304963271236198921146189199895119602395372099315172977518170843330589646896503476919694964349528604297680820421828223485537587615013266045739970016800547714914887039203584761225007432828084025932435279758574489870972515642530012953378704941881116504386076693317041554987283360346936738458542012723220835102953782551498112074254123887740486649067434537011065548279829530636771754625573840942775989304042776238941565097901603443978944864413796405140806045142312471845461242151031136986231055178503732671885161752055927979718449544934451393898852121108501400214169833574578570487893603847188750393244861242885678224807228690216329300590981119414181290654016614991100206667476794854234835150440308861758539012906237861603738907135435395649359041110310070692378361382931621830200780343493741012861193810666936838877357958226004167785487785818577631794809340533722408659053264966095577300426242939281536912242759376212519111861416076448515513422262260225774350291282982012936078612389170990287609891618008505507943420852521867545578707764001432207457836614471136284105681211978781415082267744309162985655577271617055746787918928811477266963370380466591255068717080153656307098194330116759505122529928211693897535305097449999966934973406455596635077997709178752000148129680415579246314431288360662001499944796246939532063644418533713948153261740257338693051929325637528101935434049493525508685443919812692844064079323092784408011670910484843650351757696873387933658099129125383144541112166672823076254651917091964824202418230874594847503005470668324584020134490974041750874705313106296911515533794921613252384440331979632323974329015986863885262868465586041188686905650248324627696293847297366432621973398495048382260385691444984144716573854422339629141298635577595809547625941706909184020734670965611746672059444605644073962972537547995169758594303355633074923415304073249485861499597840695445807326096402253993427226574447069072252908479015714195293078452387728293404796870150645486252607076731902949403460083419919355823304308350602358385319593684594908240805612790518663000136795847154590557486426534910349980623109738930863119679346076356112120887823057751821035279055874425109150027233544990298810557491788077341681912092397125347556133883963768200993633205595556783940383407276031182011561389146573618356755954544315105770129645331408966780626385720651850972236563449968594428198350247225751928883027716266567764437940532636028973852212363885374190446812565094637929219114248033691489039692182865163077310729888351461611242608070591792770162562027914349415607143366661869823636000497840004903297168804979759160618200465528085156851360608456556369496948453384521007772628301970528073881396177460017752123926041316861071350260123964583358947895429819601874394903781450438621390517540749681201335052727426143901596584293180313247438596164389539041147879037583830166863179892399462507792277528608152398251016041224864947060455901856774902991373157742111480105279231208047693787591068829882580180871879146708824552359648177642139785831392813956324633530387483149826818817777226903838148777334381961599735299116938251423298642383373855601907944010695382543987584909306512882674485412551124067020694464591649728590127486177772426212969116342594445530733103662074921832184135606952343615641546002359305876307286373434535648906868720400565915438629050687002455345252945091463399152305867415528676372222482344111090277185408367839578024123742401913562831889663939295574273368515832919115585541626096781189740064133977399341076407598456287634312160273695584146331198019598524672125417131565935070553368243881626947861137250108093893824990644449901240442907312587757265123652406912762941165392284721285022419266419174080447584666829887116046860063703118020714016557159286158732780467756451673444154013590107377249358300130448965547600602382994434705238567847598781107697089950372182861049243895334729895502119784803916670008674043944043286565496750664728238258136385800278965790252061564703522650826986589478338362481672243581508141935799751370920718989834771488738600209093561380994608261040934853028172535406828657703039680969295883634810839125771908757730042306884854185994459380037692455318870480593694308936803944109858224561584027220566804627274959364703282807597806647196309970903490678324829765543727346461555819489820115441442794140000945756601954035822337019827587399333358084601450809844666174604017926335355125701650471293530098740917265117515002004817110211217904457563541180068599002874855528696053147601714528766295403612864593922705389681144106790753362928715539949271985566338999499002532904871669841791167689451644457652795485472403369333146725968650234407339735983519447477583229575901636544525456195945266426683955455107639760448163943241493459310329136302023876954912729834127684402365979775723427554703823878697649165324948688031369379691136350223448494621086979568252352651599788026526040280660140305650090498423042985295195067203130842744169301930537915075738161134489074120716179396418906335572122894474341725180917476130436771492794508504222167896358791818102997394237461172061670719149687008282181219874073472746890881026542395841646570666864368805539890319123744364467234585115214677488567119777727806585018229694814778876505362651916273604968257950709569929685851766226804910831611532484326392341772184061172482095131159828916523338232269703897292665515772278913518075430249840307750525139931876402220403289643312406057724923312539333365596456984502627759664660939155808958943923795229124602460928555197314748851691897171277938847919471871503558453290095547772919246690965100450426018560192154015419111376316346784701967161070766847682859034570369789605165118930546270077257958083614456836888810579490763678997269435204471986155709833163894550095162220967536110409832455941555858211447423732835846099611798060781711365032789279832511391205614782578118477045051204831094486692437723583490897983418716405922408311447013580438810391539049212140362557567100012395216391513589876797294910974049891758795828714844249230806028518946948811335840538645317443668812811523890865506382199645253902609449525277106112988259635082138668441471031996830918406305979744400679387643887754955338749153383841517208471228951419713030269139526776142360217100547217692407397220447426272779619330557119107852718171092189956588472297077539662156479749723468985388986119659311816817864251629245744596419260531098203075214803400710780373118417577547680556343918092636961682381514109883164090453387601919320076973513684502565621365116775650060930328187106999203865193992871340116440392110372882282646150555348401841810875725209773283095562308412680685644790399580428584354207248839371521201374475228020958716625520597793955384415945232641794410717138983870043525025046737014961091561815682619323160345219879877162670799489524150647665392567721811461612782747420276247003476954740189923829405132122816995860668554231120245480153240561464075429281041623731714540355280173390893514886405685734966978524566829620642168910251984794571587604746990835651799991659136622016106424363457548169291683225543379287499479830923719880771436084234873164745942514564346347448058548298177029291664556213940250380649040919024493637312473240938642838361513131046601209457479700120856134468827791346530786853972528999486286269099595064877489174928902018531289008947683119922623250521333663861673219282901525587360984704666126813560584208420485605667547478767516272819571583743595826032494101894461727321615615985077012187684172708654678747698490805775043998661414536767027791377193430241850742576532766893936931631860294749729617133491757908231053182164517905233418438497661238464578373206468814240117232946342497103797904704026577321932002380518255210692782538470652083809980017802553266432685533796583439923891755259410159410890839517629795363599304231394126449082538638885962905500152993608122137013416614801102928572348779563555057433208429020727014600784960246833166201495979062594020423667080685674461016897044923502793425564387712632231558358638835334009073571354527082413959836155019767473503321684680449518751836394818118159478119893840124883938176646070238933938652081316811781227872666176353118514843884974021365426669347066046543120961351905767589094908718875130767797074926298986664642338415842503994895834325867260622078767732103938210419947143066978772086939079934458107934767307298593717099199209794763966608704451308967703235158382271009398206575412091081975547788813515801493315148930129664379565996599550472089523474029422918094697026137299398506610096011654102278490319368417561399853788949426835368472293594671304522619855702843304507952705926890669045914414628030869336972510275735627014662644464259533526187070955714560299781897792446081953432829084261496452605347655366895038556765337568464677025711918803975220980453836706149459276805761849499728672703110127949097494148917607981971322288632912223037541248267411990646688385005016211742321594996009809951765411839674604948934450981076805168427609798571453547839191837463402122517932930436656109462705146674670201499834467165054022736375759427258915206337894645799487036358105618083349414005383960606427473372611289364551542557868017515304585696602905627991199096480958466893278896981616112028097274379480446066491844010799214003885508180894268805979039282909772155183733430627517255517273009133666276219625633942018900094905274867947193003264875138628409560931768533821524901825142445408686041303418405597976859964461695896854502863471093780480839349313933342901626662556850171846820912796877977413534077386122900463260993642155991528199952616526421823348915930653993871054150840276976521741365331962182849373754541113804852143666986091642018082995183763927678872887955970365167601496906149390530401900281266750287533350429275566496292223013324286665699941072196715837726703894269470936862454099473826913839385523130945498907644065560642256312164331655653789472068852078530774815057715478330598569598511380067140062825109960192565148855355848004576184939466550385842707724772986962249640157149105920052925784103655055373619194309847648430494547766624932839332102872345198952867099324828957515127313491426346086365219374805477315117693211302780629347700761194385143987015055752872320939309549213833244983796026504761046831705125670949760630425859140286001942928397483851443395833668098192864518014102300488388290674283573725689726341827243863315083813543988108082465100214297762968066352456376115837077385906086472556918263308189017095167726123282657624664879471430420828898887064772482087263754557821397278479528650442014036235787300347277245935435226533271396637991942920623737785489338341352384579317524730741204560396575632599309372781876363783397318072295894602457856430868591873479184483252669091431706970552042753781171260942046435058698202408659503594561267435617103412385571059752886677913124911444810692435236761093227879296579013586841711026771918231606122530198161553175092988775989167183956193382811725969627953502222392979052746752108635384372438340703399234392383027597769672887542216631728749507332317018145457243012121314193137550666716229603815316007457097498225333697124926619209706004777948438144432940016091931386776878912267301874085288150938972223929482509980273529990866343446264075971749008859489689111542573309837746059172478240640051591304029907155267712875917696884365200790273421351452123478784739028786616683142249840343642139048168809522189923202966798905588199711619917028989994000606689115198799097429095295385195588517737660176566445174106952241225853950583367859192206986433636954032435811938436463356982639594055038935409685762294832998107081084437663159140883894688860329509224357117668830650985320247788169953491573203645446957456891617157791106697884607998894686309110386661418920174935740231764740116646569979106514446259081677866116436784202629394683904009472131862406556326719218688782119377341558217587162055799921765193579014422197499345426046377046839280249572106785677939749712179572793536182690053624007665347766617250416927363683585020376971010553451265468467583627067119877180672146919004875928262936217398490345315581123880536123239775131157872023123626250770046279029450393155330103659867784194713747601336994071206786704218639577122266842093620342990534391390315818392040753348089360921350866749722939555042935320898879736368387297832411435876473951258425044131984898336190465438570327119832005204321228480770964202313152804767195653724565936922196676943316382823182475003028593519325033953213805860831208690453293359988641933528468807121482088146684832940193167770310591530003327267595705977590589594752712602985857845934450003886197002899860401419308688099031313607860896128394942703537466788275706732488189988207235214147127925938342095016997800895919435473868631536805435313787631326744993296022767658293212729645809265385073084981395948971970980643296937849627933882829247391708465914858801121457407884561882304350396149572577747328611311933234436666071084375314954585071507914642029853327468565700786064918787198853669113630441587345420723947003838346017043190648592585366811410373916437809668730034336798233032878971720891637521205036870598765119937536795877800916199760780831210540208383611653160871989485820214239590631598523093243607665073245152933216798869154647638351268868220761947322988061239751240071163933114437876629045308731642612537584575055271568812668824135740295487432768735015225444804952061034792752195258216173616335284306344247825041401126637327367150810316190391675713984888564603493481699292871921014916563194710848862179108549362647184350040888880279651948369061629110711849012071652016935688350505022981350432688518891799685165212248517410180822372535470813701515723453328670348902596556607857052748375404957057257603598454668714719710053635395175640166924678379940232074169162063249756155842749592540978096750676697034933546691968450140483108246557783358906880354086213610210157232464264321882479060255285307134604876835609341489668439868085749325104096754646090998074543235508838595127785249557492807834290978980497296395368341512697883250712964648622525650081363648116735174225558177959629084258766886771472894013460694718442060343113839156609743062868033839452851956153514379708847783422431750571026042839669557629508830273791453596381514746531272275455601522737860423094658026126500642105200010728057755796401568186942242556886918774613049739872012496263757260703241775921037851825059245058439606005620078964605877618638709206807839231993458285253223721524687946504881205763100380164522958572725119243385983356186276864311967552860719311969808841212185952737519965433790264144453354305880013634396489252912269904299447637978576491992158072465352237234802426635568896977714593600254262152985058672921939279703757237091811446499298263047095726943377889665242095861698083703281228862552354393804315813306377620796853262503516515391608013049932211785119727817551563127693806966555061407504490500142750963440686955116404995183506683086581717321814949817059404870631676176034431825097238610720106538514860198720426831939094224731928159553538571953024515227534977453177505575370650951961050957621274523631367801968059835129447357836173455857093627553032681359325163731225264151494258837086078884190082684870048307141366460110098245173430616481834123308453750894648145482020553181274117756326613873188351907693178854533798399976607516543444143588156617081210314811954786880693399253221343769678600905457131644503033240611580245811066890784764911868892903415793307076323091930739788825348187772721497378352929125103797489904589757178761586951329354997206598398185707358007487801133800127549226345356401333001289399830959778763983258559672363654855634381947262728414583608388599297617302533055149660651076780874623169432612844674477760490875906917044181014526195605141408383248996449129872251914654128881231062228898954931269731991426153559673485057020755739234336751303484460838706971717425988631373328190853977910220088496573830612803675894207713563988546515913023648438541400742316599697088703431778141881763502333465000884888983061872141342300285633026114983677858431218295845331708547737251246458559388236851749022764664801423391785038815820947656499018966544100534013054211206822756440480581321292244471708384551834533648239027404480607146793364245331505360798182615463135279829377863852533513567703641980483228502123413489156923596591016002393638431481230878768131511084687059802298105616068260474150456980293635146918099367621798990460615729612030947754321242894142946025396830238982363809192381245306337483648959627968128097038684615667808571329730113623327643742061184820396276026119007491654867485644238151492032679750597966718958153940557703079129719956857270630173894157783029809775374223661332882137976779570992946045456081341455054768622568827672051925825151018271715750877981537230346237713937458327904008422744741828768865238447684270129900023639033930447032337056016612329017425350337275502572488550458687793874600566220899022772079427960964336504656081029729384730666343070894573969990479670229102402410114994458679489679000366852480260704928136282637098765196951748978802165533974148766480325589113255166000500669205550723859485681699239917438937208929040588584527194629360333818406511164219784835854959591966179653900637176303777490099308244598487328785001324413440946153329592172334974926408173237486336488179464176029863869004201668671341308853641084555688802204138186747704947429221672511433343798025568521102707907456014900470092302032822694495133873004416554675640549659126626691967324302530701821181889027860463395852615599250911952055361946704628420277664630071161772568848901653114113832025715286375094026126542176282651874034571460195860217650749688910007051051787001589579346086522514303008047764885428699118981008679358943792105570244342100646598157589316261015249796104351691553993868377202981581151161023243321084998913297295753594915190988071983337865406769842555677276399586016402546505604892328167475999120596399645256199426837769697627427731968100049534322450884253441322875385736448874094372862116676244220608419493599102691080878207562396326403654504286264473730009044342046273556701472729967262419272371978277536361690118565274982162930494189126391880796032537140024521056027488478597845262420620763511851994397489314613733959921878988862781517339000516680645903108016758160212802997902903074118318888462597250429459707611221606318815643126724798510009756796536439407603629265615298265535367556562296848137304410959012295982584916300441270101312603564429597546409421861127398038628960419198448287487949611564785801540784014013622195375752540426474483715490827033283481023387853316819687756618450058197167500189013432268639406343091617920300798869879136847209645274010340771394671070532421134817673465533109195158671858067736270692694601096560847010406575345927819425538791004199037418219305184967250889369228501896164690318720684839535462026191406115417502796138802429473811327168853347788693165784995540005792354366952499141348056919464361373596161222786861268493926307829060645783037332675564031360106034871725862998571488013341044656003169333774265008480555779624904581119535829955571734592634245835730432533203047295130976243052397950084477428262305513042578913862092796330897491907708047038010436285059919425112168412412258711284547334168004824995436276680805001434624889014219527520838043517341290234737641440853662371177394457806938397456909193734269765791611287567387491375764051479726363709492928478634476228702886229838526441231202867975704347357987665910876743383092830924315488504275058932009050357506743318955220863253412427504068810767443678779475968934676212432914389752215897142961350892924336213365784248669078055689889379698464670804738999990429593520691386551012938886501575972989968951901596954497338218689982061878103068547432390272233666287507066849163698011321730163254491990482753965603541091703621299523686548511956025700473874411836229344430921251675715443959871900287418449760849206705321894702815865309520933224728850242526941659523802333632636414504225708615957471443650955675488055958850318942140907156541347100650204738501155683719398977267804918717522574433054193002037239819836087660328712657730159712209999359567138501376401030987989336690139480403345424334661894174507595246344681196967143110307343625509536915359248240419317514583743066314817807544894683771421359919043283039834250249660391452281113414346750639698447747629360550005905732609586947294576528901159880706847212798701116174551750263341407384372145875168618592952800752336996250536283961256938750385781477708624279532037093009130221841294548423864322032575685007500448953990516763762039152207268949317422911821866090895391731111925476060865698862584825417994724654693167585764531147520754550848034460707084119341252664864190540834832077435666729512003208961152885289556869389535995283499935081929622288142131041253856670881326626778783754210470810962619469731490727877284968311537325171134731487025913486307129479537131411394622244818293901892582780514786412361452279473157015042265314980767469601916105877646956269376466055690266300239493988318800554800328895699855167534364382036187218666340889909923720941799031866471942645851423171401276041347145014696122871203630790935063028158784136873119473062175431429862830807372825006125648556101122443455753488003191903192207170547043765575789283066897234127212367531141301028367381096453459319062596278040282580206024916887686163113742545239774324238306513021793978284907606973643886953746532268875558112363906863943173050224123028907795961770532256820528783869790011481564231949884597600145097691078542532407860943400629318106639198021011622971149690646401052554075845386572516629794340471558397051770989159871647388010404935491013706120266977316737096537901262945550091709956519060863212074072959575527386017460534201290540126754813788985454089090522770321078223573678182731792512468860224813485874350683273818809070311315102224165110994504599722004522738817964899041239275129548069226115032179619565129697310753003864524592708551719395840191478575295369331970331182038861540980052533409883757920536142881133159078298325493674599458237395200631820669092720828230331234915599722828486946342005426739676390750707224830218185882774684294242510519654804883827114593865306182996285410634525564087563011969306905261853928335175057684125351801393082817939221418058071787545008134475874184910419361424165092977709701243562981241233894074246706678033949091507012908624968443732490638590639175506299125662005219866899797555472195636610601102381558449701273421790849078161854588562893013570498831719197301778939398482071099592741144306892786828654376444781405120486026224870065873284293675128640295076203334267838238774821379505423127519094239657089974219709223930234995677046549313888867528830033237057018150884193631203634686889737330692790612360096912790066276532377745197700769817709306141216640457996739842167855240408887898363815390414973312313769916224997388819433589072901311999753693174483462598529051172870265826391503607556769009048026856860054334065219686486321805166195597823787281920868666834231624188883192207828525807810156453404015986671524326026055331177277142217661632361673893527999741082928439928475750500008598063397611445436886757817711367526550190164858870713588939850772244777210618955638359872532745846367192907061131968181665790237490873462668279606547029515897740104854277028142067613729161588474028939597826676732978886176052547357200780672133430529418719128422349677770049404202948049292201779988771975577567225061837458468674479345822881680661950743005494268315521249240556342510983381229554540603010666466626536237246471728454849476011336519541789168948565278560682210620875845795733657463013985357427350662694267443908120989101381594221871732999641748402293960597289460992659844164813694784860812076548290551544847159310909244933120236080605567383243690107189998403523632529323429011661426588269596485759811007155631980671454755540258361842430204995594843209438093164250214848119666186644789260995760528533855400373584050373664219400696089440305793590112295475652575291645837389418608074465956930053130052872863610108615659283526694853006910724207009335150027480024015374661396294311391636188681617542582046609155270326529481774786068333000241113820512124295587902197089158005358692893675404432960488212196152856448756194094378641083834869167695209366917504300399847263628794822469101441812899627791683376118917079339613561552551307416353745630041495222453386930509238873449798336060739424268765814875484117507407877935718106935772934500489096712393983760785138333289708006569101710102917580531600914680201812099521497541404209454566628367649114299474020484727638508872695300609743445467118575982125827383170111242528038217570631148989883433995633537999273592481619984408917173040887261104383568165215803169474221526850777605390768800875233983751220198261319947036789420311501875236792418228864471143488980001233118643013981528215393717775559621106518519114185806050499056204568097479402353189790281537598093741025832386269358887312216510520385936701061591186430293289883989870323978575624552233182152996123824478830194212260280285707897709826239421478299801494175738807414557748564580114189391603415049774157145562227466588770756760047335385397392309491945692039314172034998378653559525298187598015218247031549373599172841892623142531357663713567056719386253958609503538474416064808319881565716196629978387118617953832803375588180059580880141596139362664941607440222204531891297608714320982913244133642335224183744390864301286006488045771155437800120184563274786741732253174191191129386921963310344785028628128609575264912486005494758916913195019953027074608575852941548758009012113101295127956604218078277080469677207035217987447379249338431602324354367983540249531790191069791775342327680347370148193630631662773168594122135947928304811189715591275761886500281774610812825212142018646746791228879973611634785833507588159210504689870079808272119463665555342963135606472340557365569776435131657266612126478867167773094207549680086495459178217471328162945116016868688477031865099203019598597868567266942897533417495671971935603165786564801752181964574580279853843324665972284422220138620969774882106769686849507697341543480724874274979730952442977181052495705048883824997428640812992787291863900934288122574661169772744683959220572182172927403734014980455144117485014234849344714281909491901494383865121781217488738377274464262642119288255082674443767323523888507238486517130647402256500550683617986616754599190529718710893737899227996988720496135603696196590011679891381491743930015838173385090421181491618622212172201352612885206720421518536373373164311563253180903463450070044217213676647034296051228815056414011263594184237018860871556089605360882487549784058396001040656379462497684100157984131722859396983987508962697206946521999133644488226745550852422685492828804176248305778474146015639052965578126212580146547223566262122144644949138384185045632618097910176033818334921558863971677131187705005599297655505532520915546404198034948192909842455510454284810277507352102314510661284871791848379059675298289359624913757530785325850567209673476891318040089606213284661967399696342234568571831130318648810993279240558528502727592694870028804879737678315625535751078554198190888526672621996481650973874275720461674806817959947744694788035723017368769528045344212166705990063642097098073539932120268958761670889771552422270674929439842191983154220051778364489607572223314461329597675757338602122106978414432363015021802954092207059152375917687414694121174272390737008365415998558859772717134481918574440176692277960098562014823268255774038738712288162434248143843766625757912949410019116796722348453056554057080435346173087597990700808170109922539397098443483112777188262103624076285147181050705742163217420491555194189910265786528711649414763249583792777900141575433588871221775190440990254003745351837830887366960765845742014718045744318500343436851196312282889080299087575490465941867365622343407387734874281907571162770232007898792092005497216561968363758193069315773458050836713772412125218836711793056797956611950871825911946775842190420088198677490345190016702661484275938876138850532159580447711481831108010218639856706066823182880752849360324426629461768857453079314252485432627616458183693777966806740940291394166216747731150299914422694052283591399775674282376981753176027754465737358798674934227253872619781508573644801541183759952969287859813413720727615266536051235145331228247249214155473334851549309834190890194783125666191045395851786092605581189479491996647755171596658814036018830372365200949486936987042749904990450066013960669610001212573835885922066175553721196690894705507056229009513116825150598872744187735712798252328794930393034865695703079875701345303181941813155374729387337641185787730747527927290842956939811816199775500595055524279339527755094027381220854860316295697569989227097085529697262829234212609063812101559786465521556126471356308358100704668985020983556489997027837785093961523414561401233445607173462238127082922345856275382833698100964538388083465377845919829015965024131516952830815432199321893635365726592397272414786392286393335295652692828086747524691841612642678846592660309810166255070939345491243474848786462410162717086123383176910130167744147807866977640618822616327240216963332474223856407466987300368062989646380764250863413504044852051314574778952936511675445140048591238267289668434020307556214934554655112390413099793974382973637107219126048641374326602390163845560409565550672465281513962001495050086116503447678930104995416591105413983930422267201516426243706467134002474986317894734393793475029180544708761072454279099662321391253326873368330958288081749511343646954622416850210502884575579200173986487580494933218878999713894313120119922957653837232835748916944797222110801300532822276428218654013522283045864219393658832289957514937818606468468609059850342146817916535711272922584048256028358383267814073046281772609233925958407193299543832291988614420394294133395198027395537062869275997080667307107432909200371345433391550572713221986721966281569883429652059299871959865941582272654582374705617521297644749862550533712773459968126510963667468035448146302795523673265889992751373153509064295601800414096498327865300788419085223124220520549619556184252270041159058499428620935206087897808093266981578094076708235172415635209856621825294506639962136008281673949636422513352962570790262638823521522234187511205247453824266487072526195600201039115561972965658856291275210914344037990341200943646203757775977227738448419684851677105293367519542199837662522035375559839391821471519948816869860110215300655871054475301975257670341656098948442642816532216002856912627426588941422081671813879627662322008367843124444624049462493915639797253694320530575084480812038127668851222761491522513880442020553755741068374249509252330446444223198707577636141084168119596719278266393967901210414966311329363734866932548701385435458999493851503635898343639780116729072609242179008811392445775747908952876683283907465513035039584588203192023333451191238894460333447519963525887435128520121398067140190082512129132951383041032924614567528814621666215496841202296065486438538156759234057063396503380999993248362519740132957849806656678587384615074707830030670625805581855356908358281952600437433466993454382215703719606260089018396689791649492919367372209891474020747090861937777823572755224246075849979731790192583031760048000861258256270692338418451041979150512531775313529250360576243500772209266097307127628113505018006400196415938926554923254195032868493801683220509107736262341259050026024789652588914932388490558870826181490075789084112165687019631215565843709458876948015263018376990306310795431001637238499016666350703123136822343752442639131199911936521556702057247327158176726680116390210293264094790140010972333221549302478497862102260420419708131891523442785869137067794298322888647080699334079194814736665709787983668732844780892774713120234164532454752411393067719142406568770026110393119613574286733201607130535921125797487664338375790660045186647823998873781700353920054195430430321370009002669075683215755490100202029659004389142878371480133527631406427769386185043615137437594746486508882919893884490332417995844206210124433055261607085193712021623098572253457426400898828046166157242163178880607697139201179655622152672955643735929828489806928188389069842356448654906496527307659655033710496598610897853550722984079699582399396415842690668084828233781610890231442077640397049266128620975127326483910615343554333025855666718900003949508820890739232656858152142310491971472944706652855925553987323386893558765422570066866571212742517353493702356483960783930546422401118028530098328484812215005092882683099110670616851666802604285021920108998040195411661117075358592027352165694173766191949355362296036050311377425926414625746403200141678883194722053904502412472653518159983801130220858238645803864640774604985396838860771048454070495713842918524413216423478006600255327751970408540713184626575774643632983360348180752333850846054748149730227402292183353757480768085279175852544875191117036632260630099940723386644221613521788858464778511940085232290062889671894131031390201714744824881800738936161673561336950596526542777239864786907035748115669959147248060124357703298347288033754292180237300309376787847264614212300040149328453360373320073600031856153931138181914176566562282963915839163516292617168756856163575184893938628199832455817930490572440882931332723084098350412450267864400166357561613919826843931506701243577085726619247986707887544941952835447772022978092664167119689256663793136708414999752150511894188951754874652026819070116411007602061304210722348791950780344303844049022238391420727427929336900950894057422671762886312965123722190632821133774088615977722630752282631360165683028488250653675745229510584538398261765589091143668284619749282130139659012015116278565672748786876847882448019575246096499287995646618098447228027944601737557694948374939419221635623766422294089687567763227051815527388962028953334456881995710011023692020331629786622765527064640734337010773204974349133390356811266509072603076865895677892413628380298888856394344019594473526648137520602913239111274404032132007924737534868552322993364365136258023936051038319127902791103474922179243665943681935701984551685807217152932930909572122233016655775821103910576380894365092810653226488835380641348873183452596519952041846427312800733622865251328423633593202866273032279167248771741992578417058068943583539234249874731954869935175760541114294334197395107621841151833533304531818449431873762137903343342624608373979002419518885370829002616873886333960135312219072256306801143110719222085686103557287278528599922384911627262549389168314374381853274479643058801052408858842075850526312161368683864225598880975944388621735851301264518824698131525163169915640506268126528610331732005747576806671411654296626431382835754136049809783714544472194103017958399988063882123176590704263207216115549659853130347655840842115269153561938328157980439553742323896971292127217970536358832504764678665500371404684562858158934634752560094852818939994574875462597993810711160121746284174210037062666976263770447475808670586999749126382979792890120607831405750003053503572921658623491800702016656327042730905209169156652273811051628932088665753925955406588327119672786778961714327849188874557038084332249970795480052772433125967376310208183817812018110804946308276403116388270841926785152493469016360993173893128290288702929713066342623042909790590815238223067788015850020054759229155189576765564022364671893226252141279296583279249885348599421486126861259294927311439549614654033243078815561552785659877495061706046959410898687512198410958203009175272844570573513687761024027689106562617785389232310119807737533159285504582280760843358023318224520479906652430557559435151199861609949079651372068918526915866851427507994369313766194144780188141636245420863234728817352900373130461678839023134106447856532242714826906912009265143110297778604076525714087751586145272543535241969822104750498269398178504342468023536355753434127354763780495875001467329457634860190862334397176909060826989016885761977308417458808255794597796444133354195373798538098343988248470848419892488907184835199525909268914414459697522703834711891337054449171362003900130772551337980368115163668946603508776978184123553748856729570619435518903053028002853460207162995554422008460917647474513564123426799623918492407434319292667873807412432643477094347456174339273648148482935264627521107614714763687393476923349823751257963465251946403785675709970480708767726471597119598259398635181459885911193488491742357323658641633507341141877203838108139285460897420739657451401461270398504817482080625799692923156155275502348896866128762162004966115308451209677179712777154355042267671260484878650422153548055188254700211118296036424598117256232463443298465728180516016560050244758135241974632073083006819117521008480532122833522031692162584420917503016419426164723717991718575503904774847453181063434521982598404197238846507756024214213904306709056372819931063658728774587256697462770979593833277003561727577966365982424477427808809042106428664594386793556841563231835521917030362821293261303239589293958504555010249760032855084642953280998151594528114845790807822876741727449169626114818077894750202453855085473790169057214224364299279412185083106810827962718663325593799216442393522624331956735490250160385545923121562264007222331298778743016733086575558521847762655754443043640179812639862250109736782296054752674649469095286237779584323812263004590810592225468464507564814021509544532089002198411371735751340814921077590635430895393386472645903837092983874980729674303285642203172606287521348946413026861471067255324917082082334575257970941082516001092326510558539537156758028871392696273379700779675309395608906904189981278897309176808148849687025818546687101623576018782354359389557069041062790174150736596566982289826791552339664248903439927182526399676173610055446821581097146245501978180005722166746138709388917818517345431442305551893865813451851471700824266750932837032657543527149164740194502311424604864330530535309475105483624547195402001330184167096448319381639539617433561183474451620769885239593342774568324646865587275069207133057865785149796254747792970023039074140291803531437251473846874736734908996263100427453090445952264037026325901767388717921742266594575241733413710852307079734266426591175583666447691692770621860048064757718504899914314948549675311368048148964922728584364408840641473438745788314984611045890057903493491988893001852867940280443506060137164903886523065980791519151821172654220213221573071934402843463590592946658414344978523165034943808199241334778182210546652795385077886191797561958193681324588507697175875790998515377126313481186398176865485719207528077494618101926606777199985428384223988952254517215270525248944817762217087621480013569522878102571297889883003622077403541198667896123211732493182923344631646357512858928039682300969798108871831756885776376481199107735283750109707843716253252136504222651385879700588439913725258431213010412849228995879314804695849753660455151397090511229030170015576616053660349820146500764267443618615799032823394049522848191779569030190403150045745815356195075852385792573935355086175931634171094365591179702648352803701550739761148523565036869663185885273971603097645093538054401908830719534688407824218764972787154317718091545458519818115333106609280816413488679610301628232060341994116331122066740813085155472793854091014501382804789297093053533579113093038976615188841716010596976040802074359877989178615365387740128784533451192587630174812339680165855319070079334950861339358625822662730526980783235665897782656121346625833400797044685734139422032734350916089270994009580333791247758030668753727515871710281327543099803920901738088668195801049526954159550738976893179239496473775216048658003122454192444417769237463847875004205367180255643455537906716620163146541209191906338811189561798487916849232962085224422211761626823932849246432832294730473063268404878968589946376510987598518131109758110056536721334433187958573385468873366739135817651751064455844286545258232428746138976790102476527987412013736127931682553914431178413556323235685247589699390060629925895851810951344030679909654987892468992230839898424505595192899701599479005534715862420686273994425435668065806880457380241935045257770258911510625129980805238834298510375709514365081427372071549206879881327943393962460577345565795154708747005767882930441491503123231766494141526998687335204681248114332084286340687996436182099478354981306620549712322897409363724956495636627179358392338162391792978224525643791665925919063736664303102025586807408758335183784621165322688193913409017526816318922162887729895251048704194401247546331889203248580667833418827856811628916547042699832779333939613907874965862217853198437931634397541001139171817137524307557216582061482533450973924163475519424193951397681149372715488833203645738266565600493854882573622247102470366097523063312369677728578043111406166941218408396814764404146229454841262343738398151895728142582416658109078895545657902812562623646279011860700970774847835831553787338905516359944982166066018673845930388133670431010209044561481707508907551754386688947643053470584188404560578515974037262120525940056918256358450771824418582122606597540550716822385832171595151047973443575285777066517420295202881445767140655231055059982547921350606095439629662074196857276596392262511431319290392468515648722003442906196934707739685716767263184438148751872782271276733799962488873874089594633192676606580095942226970598465817992640427087590673219915230051675578311569488111269333875323299501752746707406145038089914809359200735505701857395264061325778849447484723571839850663315195878031019564409165651433391181371044687089421211210578481358769977392557839575610907765747888683418722880254736084674591769283013282063315456526217901475863387251862593943281738956119939471015612706348160891763527981125530925712765684772720232040478674174225391661811287481607144879603785365756528154242341533710527851443450478669977230220884168736582547047928237268891505299094064027673942182408219632945289719757358640791594556849544842720149642396346205101195601740596858899542780380538834525119567591799658217844026554167075475784742614572232584864344533057130548644592768764526395902461191192246941118218092775360229986080339703748088530399439550398520967817106483880238508672779059952377707620050200063061326229757241975832811511655741962663374072299314070536217690183039028671806187045706501662434762708786044425787875891747640817192183708354113183815068085633673666896192602417467918518831169556911930665641807034387722350512572552838103153970423378889214645094400491006448691120297245772083941859681677877533905236444165557840181520453228975514960941716944351019808213814856511322912594215993611131103876146815755830162375565687207227205586135087723239983650839184829594682647702500535811043291017222589023800658000317745935110022788401500108169156277610567934041311658758765220412679058307022533661009665180007345252410077480433270084570167804113622732278943496566726816818860274943324487804270426382835783784723065487168976101304662978259267530872154498582681015270114430789980636049458146389483293513265208456855237125258932244900708818631037726122573287287199420234514231491510285655249955036618502925085866484590963523128187650076358884232834852480052918701746942796374848671964379669162024769037679739806897511758136026197836851319364350232189144079581719143643091729207367494470689769242985131702256847721444127361681329951608820718796369522827528617392990819376002247144076552138499251987285586694547555365395587766355522499426001964374494302646524403834392525708222982585382050624774548852162676612920495121908040884244622527603490998876015990824279351858655323101009904067451335179140902280256983365450986114076243351791619471475296997353208368850988794232608516700227365668013917391131905029756254468150870768087859664761795256084156553427587933697230966967916706115709152128417511426891652363810514723287848594771206600571641532924388200876740508331691414172204840517954284528144770841856852190816686788770084486914803657833387397019159925778298528248182978062187796512000768581642926767861470922832620181007106230663795898181640639987190957206494858008252660407950374781404579386724313839832014953919338425010537458840660929208954586100934520764510933320619418935173921009799575321168545986316673869389258520949166064157345920313268387155545828632664940661146839783145978327053914647438487854236008755001886766774270215620667317125322467307535192459031197058647739969414414871973413479491080056662296721014025742662329739307655507294108365967040434177219319002426242183565650551320681396667968240524719413343987127651878190141461617746446601568622438328092030192433622892597807379269672885590741397833336075006387011392758572550886781403202821127888395699325531142179738495988426350754398807922576708973060179327241956529333845217877784423922605236725288569127141675347930398271434913155216715204723070025350799535750650483475531316415078293727116689796421757224576334104712640435797168426234750202741854247815889311962513782126463964318644654245967622527797595625705670737916263701654281767170780771841869551659420828406076745934942077524638988925804955378967861384981979979792823382415915507096834723783887760858733489432232654967845169997988060777004645924294592272351372144433400177695985605814293880404568611296350794860050087991998366814774551855499092138411925277514910760272082750206914372906240119370723627211405945779690297475149225262749276624897999573157325069403289852104450663946301525541261272352824593151558407738561157690726345050310812101486579426566588761871402503866160231680879363980012316246531956326495603587237805211338759506666761022533113658427976525617061194036753538359652395509425753621410974408107286686725069486829237431375514066762887784220930633819641807854579876436430438739747689825737984400340367960541041020273535847809962822983611128409653405826761698906213049129436229986686694122794545140167448032829757128970422121766023345761289118686485906165729519250512643805683815125288530660059669939915516248455560821691238199492544851818315188039051497735031545555712042953117215761234866308427097904658123790138768124362913613995905595909359280246617405397127586192830540787609663321080439932675340432956477598186636176579123205750383836123683921527332261413199867382999735787764660644731453277457979458407989137095442826404640526841522273508088755979752757244101000074376352407022268245126863254950297059079601486697416643245987951254439947080419142641396038794478747103906900319945076733086902206846574458750258296395965138730394452922633877797062172091105474044514726225868685616834044476579546362029151724744724036809365662884912268744025913026010415631717091185870325750568942859627750953421661309778133564317721108882887017915921758360854157381467155779084088479462348293805547462404056412326882008028809941197431655386804720273150949578196542553708441198681397180150929476018825054185582132597744147610820839760825204202179685895954491753309407253194496950386626583606904649194447177866162520066691697334463447401924736834847492618787660140190545391768014004768373460078256617574979485448260061510843475375104509395536393857625692616638942097222409355484444325553103569635856617766153236879531966787698844155452860940567960604192962529495215978008053659333035835889784105343814672647840497944366779288263698101635946464682200816847452931031977529315247542208925010920446906441013767597208769858821654005958464293955207764432341243149849601487938191263679151760112709755837809274482120670010927475390137771862769787382321476918700633454639359145874545080856093185149585682853880928383628853254145734876586767610212620851436941750585773491393375805424737006776529239404587648935316841485925163485463398093088263850047428699755250248549913979491822979190289108859869818372823111967785565079812510870165499830863372387371865778906716110760991497478583754158090386224729489823521315529335013759177146768068822246796457156936350060624934617766570416320187662418130387168630656523853256850434073653865835293487018209751665382829316725944490529604589402117622580303636613587311800494253966663751522185212778263757150099290931286185448385430460783052688318990455906112369051759343008118718019072100127705301671651143395987003476762996401137402568505420350832407491157758970266312742839262957871751579606609074260767659095918731579549614046559945496397507434073854757575266499853520441019390902408530394971949066414763470710389193317131175970581315436437002982444702108702325653510052871245914435236598664060169077457876923435811992519329484823529066186977277656957817408776094909805192920451252555590619700862496597296528082876181179285846362739250526887702619091616053236737313079438612915831038446473159582806279944521647201580416448120077886779220140022453916680920317164514159185374641342223579906926318493082490497380043786284578175688744539030419448456431170934662181808484801229637755289056961140424542606161891543465264425770198949644075644038665579890530675444662998665889828965914203794001859500912662905559362092305328502918721279821193326578396560666679989007248979136440648345951892763414937733003669724028813962330591649109294628670469551244085696578424597679094089764466175445406899050412464686359573606324875733279353284296708195520814782221186408573694950163076411935596548312664826145250317776629334068405863363098298315801770573063048310068879831347845166776364183313929169470051737778567478163144157223330409830219569134553638477968456911095415375358033742522059720230332105504964525080054644018543812165461390730140726341523068863565564815334913218228384600460430562444401426164236744753397490825164636518898271562890703382176897490785859038402911945496912887529625132179147325008436869478230308772516904177549818377352241910905721201938093547986332125303645935984779104925436548308829008782348693911815217227345269540601604106861185020118262972862067163406992147402577657360242224890948527334334502320983262927837591406587175132817811452421077899233547015581970229619967213696556172699774738432984086016148109035310066724930588802937957114071841912311149134922603987972249399683774802930553384789166631763254400997679427391101709640682320483763318028732584004912549246780744670315250157254925053469404666355185947697293861689061073258059801634166724553764805278244170527429328396219368600937158926380857601020195631432220278414815375671213472144200719982499938060782110134621456815941758335616612388649542708015070651546786549418672261255109858786263573373608824676365654898615458168036830438451847848609022380807334984514249652480231240531856275016515929543961572877342285822829132234018050579899005930889309805179773477031716719741155185558211235162032565871495213309816639327643450179906173859876979282498871303880689143537946715020005267627681091505548180227199316560793631575078018201717071344136732496839487479892296417752177161288162595881908206560523924847558747945162357028321162999840244191107345708314255232444380183039835988426985437112631140932507264432955514817545494104067623670997511805205269886202133110188673615850299335190495914168815500818120536771087628359799192714601025268863866193203214915084074593022354393288949395227862322939747603567858019944638511350895969602925184217741239619461537613028590784993572838288004733603072877422403469713089318759064173518302321537398984105776560181014708307693229057455355132697805707548256979642141580114082157280429380258429145833668685740023172427615786657544001835855075149037285332914553114080791952016297833863032744763252269013265868366722324767658638364079966118499405919013943050582426406230551475135071270988633378877385753100488785644637751748373743651571438024214797666245242030923015630858658228499375896533575759206583253063613287174018428688251848724655312998563780840152118027753836221166858261487494652928553305746754164802788116379273498542281902369516187489420310681731805131831958056219164940188053034905010075985093134786871751692888226834855197865959351867985711147287695659752463523425243024315779872373996693011923932877377772138303586794352548466869992373708269329623696353828059291499638535781948459830581279006510514940776808545289018798326402569261001375031873176190996969130601139445959920780704772885115178831851870192511133031048157419913209029578959557342909109831991566224134474718905005811707167116398822174328881178490668944643626832825691903676680653919150660595720611500632206658640600891791862655206251020817001446361258842940654124418832283316365671197464779738960165049468378897621421739154959617911581737440369047453256876096181453429998862157070388739321928994173405265890719787023626008656867725878947351811923968077459431242418948858527605297886207123609352153443295002866219403865637096742833829770025069043411706519487876767601991152582631002545242131054691316829618594822638090802720915266792133282762771349333650984311730919392666934520843784532325193928187428512070130636453653484530054308287835942508450549135630399392574661176242603986766820752645448213178819125649324437739434083065227359029619491837551577904537510182804635877994437899883382317374461374368817437756119979437528390734220387991197701839325330935064950861753523701872308485373461990798304280550322733669785651565494202185773447008097319644616423375175061020040639628847293320678563726189519561976648234020150302111560148250569629209318623610685438169693341375753484355321203469838977209072889037103005524596140845873990583084775624182822145114312285760127224439286001762094073968968304044791582863636977823412913611497160189708299269445420932483534208237720181152310068341161361436273796104390083014460415528185630826950581000828555962746256578135911465051386941459648542040693062743463278994763236446071684145826893502332709494099410614249912323099889358987996108093287426727888227155842652479272557630150046624241947191798686394467748925939443427970195792238503610979377213450663344606841503128295460366333019794851672496857025138275116767839935571757535744102352467491291406249732757831478914970231526570588343879554581152407775710525587420877977695730440901872827205663222397601280719312734257115817635822405143756949296816578181124601337562294546369595429461502070661145018584433363598357163730115909109536037898309688163892014560070508769458057799516369628261619041512431632748721106256802945313791319608996339966638378508415264898638236309437547597973673171810910846725329003853948293056717879298783480532107374064024678201245562816181973332994151074118034188624854055722470845680162065957338841932017346424405618013386987337822372444545643568396864598096498120469189573180705444732452962385225427870252138158710936186439725788417134884489066765980582862736613365487360582023632047122627149946701624492614235515832210623797732398109626906560190199847090891439135839097202547062675637989894761139084164914116440646537188173076174706399826108272885886997062342673908522899063893261908367820396490134038478047570162920388107263682063284979374385858419610413623678276616458760761133718335091990617257693713069463277112559571907540687021927445340292810962780996656600825607494737025734219627508471107356113779648878571506454529453143801422783113048794662301771334841379118966363741862339089184834633161463093916932237546388073139964181167277752726995145576822140455049855394744813125277834954881315861094187224680781453753708877570389720449114538225084229562092650876704906862516168503938306978564403275183554816055301247971841093442882717096572154197730144447402749438848659797823667518759455067583624224116339558545061323035949280243726357559669660327262709447770924329488047208031392207106069518193667526070657188049009005978600396802400838952047154786497486566390716678985151026659570044079286964995554012214501003393691366134970309047861742328508919476991078194449757005428606166664066716769042198769643200325652630081734591831766583151604674648232595576368670744939399201111818183887180162260078512061544190354560172823034964121974734472011531161080007789321497584604317134927817053882292965230291060413054937022775965711919093495703049412639515296236784388336362843828877040936698483200306767295990009547202142471830430551951051010918499746814887738634913194264479448060579311825359789780955439596642525397755579328718957480192854739654593442200472502872153718898951697719916829242173858829474734602220794697432009128304863016899198153361158642235078333783851472567027973820576462282263262865843368548818918639551710163224197661344240825487581663625856399640579638285496831676589362127781253513123381803792862330301253845835625793147732546732767763065827672783130005058041387427901608353954650242343199792261162306269736193044359333928808307471298008465894325617822830584386854170337042993903262068927567792328948898264601061357631665871000983331476101975696107206582593704656182115416156518538400593148938649962196552068359721513179606552771301439982029645108828942213536833643265935954764638183623359477784529435949879857177852704236337374425064385974144690825522738115375550268502883335192822727611425487384245563682827423258625081646462560034714991816197709179481765109544466065367479906798406928704545717744707737533378382261241585928276423824329875953001288535576017464906075918377342766340579170339693832683406746306478100934304203825785052523225324350610589767041976233217517551086633098509590008101831282224446023593075330778178422563488648518637807258819387904610010337710964196314858154164909090472776479896630094055717006856173756071239608793085496614385764573191887489894859402070401622523508659910824387854227456651599852887297115289506982378699985236750775269845958168013113768489136284203935454181950090553567122294501948191238823099494175217520259435240790097019637638683235097101347574662064981585075294500259848442049997532765595037393178503625124895061090051432062515372599565774803810879549573441196300320168900978093324110680292284550895640161656268389421163516810979773164845047753054025592863325897667195321261267762781923904868204951456766223269114268028598451742323902141915396847672295179238373006610794567514002193833821367517490540244870412524436707064746779414810933169140017260506359894828786424253429064152230867874069157341474782399034252470988906002835678100117647182485700977732149742931742043057677375712460278555761340248395435625320785739901843960930219393784568075637867213729703111258708690704957852108866872326085405566180964095409563671749425971604546055855745210594647925152376699494258298657315475011444079992000409067335577031095472358986483206138644839744797173594503660700635796596394629946586698771884950204401061384827915246624662986465373671076238968585350362950120519543169705305494246695516020604644408156728604092245666428157079875648716444340974555412536244158232080695676255908460807740605516603830482974034995724238269318026868171762834420353816503671738545861606534509764257417199808728993116283054405309511357824195346919065987873398362715178383105129599624918319131896467752858853258128867460633756563271185593179568555865375796135593043182417438405293398182763539606701718624345513381872587886160834453039759968671129015291048266421904111194265993732273501882264920416416592948406091249099488123989390406552743726726846714413837181392179433960981793642372928565563824173773691858134774365122697565270766115011957996615176456947990049124949465218384095782714768960204175768774735449794279078855170094326411396864287509891204649643872350207675802482107723185105504552998642259827437746772691002906458861986045358941241912440000287902760338719564085391837360021330404874923254939697066726562165063112058406096569260801838765016939957652707311667233947777909428214000752860513593601617356760050415552755195859944041741134746839176049118131251936320135737442588324761047590340426385190582895167202786836279553286196502332569070231796941400168964786910887003201416873237559209455779618544016137760957584529469839280405841701838182012328246511056354736362548221280876432133385071193254038609598777839402164714098327605900603395144094600437302201372585465464813427176957200950537342246516865976682199383268578171230502639352770897435902217669605558687685611423210460417347615768823984974676475851144723058523882740301643223272324734556416904855963160396098152575737031474579642214685841765109237031071590020028278716723154545256075255178302518646068842312331318887374285720594240987216098960374366158637175721725911891747629760526293705332013570194247561752540824853609186703443262245367174245437626743387182881285543134135894065531814817488527494822565443990747255522514947037532245804076941248783616795005969695698850375116361415361688545405645081526913831333383964036245845649313481662146818451681053574033338717907905407879407192639269113807861302294273148579729864833530401311897089042392912179893190606480894440335747267131387143830524277553810851097273621161459549844754025152591265353830240673021012204313386856916161064494363505745014170900900281297955146001891079059356608013051973055296753076231440680140832115259291478058167495404800789461206725681458318321489326289780904646031225538193314797100059204658764304388977523708030075388956044462329666930316301755758295348325537422182311463683937390833644189291477038437164056452982592478915930928582711578707064047760208753736029719150562047514706719912173707424938434601516399012411311448218451004681990818985683297023812339393101446768051410306828834590874827069003626936051898023964458843787834771649425664175983180145616677783400258358935355340320747767746757449131716549457452871786103079117925761134466761137897360458559465732575221481190959168309717372792255075972839790803034752804580944643322283277641426704756737762694303650787150371926263736485316482877891472603774906390991909200171304044671837233874895420693785935358507189527148157200842179965299823231139427743260021422585442343151026158491798493042297354894195449449927259219003322709666751280843207788069988790175609058426157633127561142575118220297091459193520482108984916508287830348708505337341460479570282295492247166970144398656611244819644909650543883304569242642850714099912980012848834064728659023843670106589243064129937260414682557147442392837188098484117025327689478272892062193222560757426396861460700519965434119332650165029497949448234287199346727737156505661980049864816523452316861979872575337645288551493539699651624854056508733399368679666548177793676497014999962414231506630624230446035636174994574984714496909281241866022551889737417135585371886803066823123481308527550082114334507862283351716945488596200420241288456362206699518671231012964203079258228645809612016574246883253461231162295286128510567164894935174490249941203305730142126071014911145630376771947861449028870326487398342267055356814494436353776288030416943453622668798162283383186738459793903407102709825532859330811841812075802961958828825919995864407123257729753405901811615886299966653268258626516452257148720350561048651083129467677211705074469844350106997671751813154200188141890619987047120712468414018088330584118099681260536356451605241773665633791267222019343562742412886644486412674434932128312455917870668131400378243393159871905945266729201223886534592073131984052481780767744947220938279486743495557579552798590497528874496912984468624459037841724292471764498866314104304938168496897639549212878382922270706063993891727886926848292318185134876914416615379952786039863622389396064814804432989009642427429432348378108344508806021000034059227310719149898132507598679631562489862045729527937905815937627230714785227958564133712185623234160040051349915784248353972045160036458399447584074000610989507678387874168953266139999044095493695491624732622088932102710205768271094961816399905223703557546825445944953046003088521803609900133246043955004579693224765887217787975451233351743897805541151200737743303547464551065454056593945027448639067098727888950060571974973122286314005652129085682998284648432852370416456147093781811195102599097748753382039485205176745050726693958639837896052409822163041114287409847637252416142005225685778880795643840472855814388996438276781595615822067980159426360472505523128822409012691906709561086058958920686807794927323759413348330176886071040297595605192855657056751705496229822415350407762110030164756132938476574323743194952377781013766985384217365546381045636057126724487835246394019587752604636005464849925873526917666900900762901920323259980754160331845577997475211586020904323504956353605849426892011273840752785559739358929439429381570384755623360717931953210849551187521322813442741273974118047841249796986948962547821232089255375135426807088910403987518089503380709400270863937304125751618781284028181325472645586928200280656491448983306694960613703574338375854399841061773662432096537732271527114503095470571096210595892886738979018385765104795282289129404870792437287547714308033302153651666998233585007551673442917472989280049539369214188670587521961679859349174635655630492649473062496224917699227038932035702806755790277800159142359404323134310701470969056899221911139410658812595289051065695569397954601269851041892021778373057704398391086839364432440535615928511380217735404598370019550276848440209420367266021569612484473576752483824429327912413301294459655730714067995685888892689492070017692755808865052721311605915283776968264334841706429252108681344610225679136074438666128720871955692207615591218325889969950054897500633761262160650152119175039249282557671439308903393676658589336814475102304122212873816624048661472951200858120246139491985665410256279349749813148824889592446791307743933375952390694684055411052000480585239886231520453382722234625705039920388534675226876473482480768314835503521095196139404580073302830368514194841717113213136666826895900291355219835883622779904674845683940798867212889682958637625346655694880858863914810101474840921064652454258671136357622413663496483300226351506060026828232841499738723158732068126114592230804936212354029769249213482019626638124370732161076125772448320655713804602034273714490809995916301888748456727582275179250234351827077850159982938499676193761911528050975055778410867379593426114763523629492808493720691758071220527292450648713892589443928996861666015755127247847633561209528136460569672567031925587207354305116913127888891729606978333970986231342503446918693577223956228608545517664557963254019648199557212480863844631928537997946656385354063307930141362209996163830300088730546606785490201469901162547105421645658720449929798105834422338667405735833182927635106956530382744783552554755981256542109793553627318049824175429893187598321702168329962470254192640085548349159206009000237823643526667037364238031179563380075823788253447257947397178260198222795452716645381394464359413134526904140045070086124999643319218835320383394320746489072200907425319266925802136381632555681395007241061317367224291809611751170873482559437689355321529598510894411982391395528792373295548692122626610347978705559688805825665079461456208374290806047503098238303685788839192922395928915045689655252868071273317564342267557146976014090974491224819093412293544916750477940894028049101348216077013752522690903076696680713663748466316952148503338477870478120966167504497867716044793585172635806301233708522548411845065307231255057392900184432650193759662825713587297538458911142316936976079074209724647116633417540897487174129545507420305820644516078753541931167218256797079360062849594529348761713876962748863492665889797720656006483880907636779866858598877596893871516976357160910382325587914052587145320636816660157089998056766441617666809804226842661957200973062336630954530250352998357669903746398482309601207574005349893768550312953173635109119078703778598490885100934565253700178785270646047231169760427503241709634452697560145492409120933737616206388873419646750266380315259321603200603512542911625426561528469253063495991625825124408879576155500517991047334940397424542276332921794307857287807035463949999265972341712573403187985622303174705519877964595119850772579840128763665654062509877814455844848555791302000947822881407464235052519542271765274507396626767868208053104378358793791942651385370875387859109418855705396631708066615095366021210118608502852472848940013999559325455886189612350801559268219848162822880971050654206052723436797571205534248615427653892648845380740615541242111856268911701036125115991965634479963515641502887287168153055746959663158113996817844445512199450287257486175459177168601675661994957043189626001852260979632087520537943579754568293199207798559908187227995549224686112516031802012161549776823693747178262067310702403846270734259029918120802556577996736685962347658196001851021849895719043704955748216637314905872179586595339755881747742411162615772350600551988122485620755855654811030343472494912581332083070265287532564093388658974110305479420807015657468504782091763641746245277248056551741796297738912284848963983956538920422229342804921134301374508041194628664550795246089650574690509349565462212057643318559246116930610695072199692411361266876561388047914115467220939914467051911045624004957157159617901661202932020435579021395448914155666011181031240593504127311100710824164293256159770473405092127375774588667997136578429589174716741919245066804595544435963515085748588111817153441183732839240754703504960700737667405601352635279255346128502229049944168887225227958559742391707397660013372142378625696007332739182253290775963519128802742614981311023880862080165961144259219354104136598462529656787035535435856289046987210392734029078064173386059625510941659220953327317457178642053947254149121470474282456197273286682709650592149556563359093092917687566065354109911678025031330475539059660510183915557139348570711716550994566702229047253210911868910347084746113818045801019221622306810556363606369730956889960135671197765507476493474278695938281516528904004488711119887764402872263668346613801765400171049143332083917935356136890734937186405226713079704715053787400368753449853994618963666043104115041653717626265611863853700845310670525801848089592470049387135157536469459473066900074898074771020974795080917396675572690121650485206645873506502383942535506434654008397793526677259484619284401648530549089916232532411987238112613288966497206954714600764666160277731863724837764021099519700806168869978988981521611788187397129333697399659069518339508398989541523387581916754059081236320102163079379013450295991662502015766403037811017986078470570034092471947530165804731023989925219731993960230169879338235417583631580412622058931189524898566821848711661705149348657133241465642953821602477602604025648390654966814788904124047316941357149600592186346510975128775420514061941504435334564286666832630246057192533110695532538772934943296453567456159030973643388931799289251475078305320363581370124395229929726229782585037435606094622862359796095054341187360509549967379815651751763773658310314037918855860387636116142064934392436261274628215468656764978728572215140978023388188192398998795738104854129615229367091788311309770278873006367868714810417945847535771194295663269476587647265395348822351926029419242146438357935580106966910063902947418081993088789029803673688098344560074052390652009221367469034831981140877779323148594783419113685651959610981952714541558293074826628862459161789107951427560148668455427022788364025316379214527566535301917309276867033065105736176529016593399496117578423348304935981694569253454368638466859728298500775860232260895604125151796985606343723608623165681048382957541657119538364567321961132834072106389358312149909958637891457419401396664357196029593771169092794615131587060154740392681657510409563994465849393438129069378877775946544252566732234156121888274650877211983784456295378004554132314854555515311584047569341479097254189503919882806542040499948463980669281708643652123659261450373348602703859112170947718917119437427767545446395217371223561692521645040411280534657723700113194392507365014981545877162515184624576500733442394636104084802365822136942154615568713670884785745680937710623639653680027472979227617357002582050963988286025709929865007577375703346741697238544972522785856360612207255208279954944547912372448889363662745321388425004702311517117218342219135617862150866698051855737870456322861159348279822973282736641150971714007793754741886863871569826552943194094285005476021623559237899552676110428030904645706662095065018003959976969777043252612320332612480188125632679230982166838088135484340275586317880767545742206433742238395638295627987482592194461557152721096516279968489608794291516703847301661307991367517862821526900748588247205789500061095692728600125823677351342810262261982959731492224188185664437339946639130098852237564583409997876303282630126815261818513704688514072830908183339819307349702660088179315969050420252998852024274114092290839648853040790555189210777048263214568466001892047912204562246154291976291559187527821589331527798755755271072398228697184251347255050205153312175163548795172241356630485157439143025744022959642081787742178331071071023160822320663152158716674186583526383033744948867772139790025179386850455638712487786143684021246546281076995759245146598428379983170066779586861616557376534933252595369361291095854077873985145816431414537568059281408613677396701148048014424444301240753331596238908195445834952249966072239287171113781465284462764507940975382218760846176797925342189897823197431326822225863544056406171370757366145363147461982190995686983011985007464505924112987052675668031961289448333538355900537300418862459172156543421041234623048476063011675387150249886251153732414048785769718492318563357243758794576399458413076840479141600367245365937194390054506175877680492352498625182445113060448317528334737736474841122479647817220249544045361859425278021731276798639097237810458067647588323898604261563970551890907570079954195305417177476075054667351695897998535701881595899195628913195885637081643810064563619085451266428673975160829068589617748755649463023585861789189424735359877225097054236659493746582666306398955286117189025806513407494207668418333530819542426899570846708891086402729090224474054143700417748390479202750891241364320126239637346011896946567759119114475821220685453881543802697829592504652789625527775461742117634353326636258402906838811743952058258835755786253019123955575689776184151105681413728645935143877719785094890285849431762580522916685126374354486897223990133360885255163862763671576157342935693340813212199192945780384011154760433455835334400796486837681191359341894063020334512696162016753865963776754547062812657384106842046874494756471248888709080172036699359084953528029315877041806972281566510468156788593603344681553221458471457272006971001611701574936069510073034551541263957516737900615834875331397227273295678870744464936392295414246288230088578041384330365625532357310225745614306830040159047922771293529935534720286208509764208355226084810808860286414810782254821671942050698794453952323946045251921129285615018736720039079813050553456119020124921467332375956422688571746408690779926510189180803784535904938519860466916695782860543712101391620882717013514905353029318473922800800288907659671469838277154115005500512643446322588578477476275879126937049949623968707429768538379881402281038950092442971296889338429273560812257182275581700356797047176322413984884946586728017116582632530184763655437668002663087879502990747529964894710894004838119789674312039292381264656028980937066343653604250588786052560139153998535731630742818156262510202371068502148620979894335735825102779778519300496494579738099335607729563193051734679332600008940811103582434763872029059856756171002462105188261136965046779466925359595389749626062823493043597792890887634274601388297595880936044344597301940731718449134671964238140330637369272163144385825432264694704450989511398548754584505068125149868874193691947443886951617862989952398131788827271503737934477885231616758811177827045525563807339080944479518401432765252400576017525019300807719127670599323564638892145319380096165827188748439238348932651267066836920358628077197496688438919690510448920760819755631471807635433091076896213964613447420409807810260925361500316345788826760416820427429976093275180393087640611505590527018662924135573013101240702571376627834338566832004350470742627460990222868802875612978757473747339235907359116894840871749682462853157340020545658363997986597843840280630960854325047205539722675248216469412901301157362645475758603020306626546112042432998786376524285107245763600497731985243660103097887814829551036940832187946414777542541219075551559617476579994832100667298077483138413728430562412187980980673063110440255202524500030974086445174455886231929351923561884528454690386409367507319296627544029605503806558997434494720203599355409438525773177680435356518812847324763431411254851464909499472945615539489876659329466240020151490634336292195714853883257633903108278492924687804490696723077072500750658082910013261566430160179643349974459185459045665443518997520945435625332322923812890059614671811666020775062289039467402421961367933942162986669762700069998184516431214567027459524125560980645968752614330725313810681574257989165982488548919145021574613039210096881049945770898153253549420800049088759302344848987900410798547127683355999363660807217897012208755854221041193958457607731150864031985620578919031779084590133398134423753142699696973330353963229728942254177178222352751236401051587303864710814219074229297576905477967221283666142889072958049056649431198793492261847649527825069446036999621811465059860206031085382213474561887947044169813328100640952021946123306554150386035866595891867169688812734585314789799959441786861765636346789823813424398596191828987509939096130499277652073563385632082862354192618394352104234107696764115900385870096166755160735352602603138833010646595823330829594528443459036519811491630182986981912261303905431942091789900268883057893949307196319984325331000623088077092414431248000468287469750702601668304671201774430252648786507911764347718992233447838670947046291922601592200219642899983870197817926991794984047984674543385289106952370291305711638739315527399485337774993548697864191751295239881025472513732471290859860198449277597091319332734242187587331269042474946393936895733182286407460828320435619594266148403862320166585727579007098900213542366503736277281524583937732843754858805143750663495356950748244679386231816832603296565461039773786880226756621794358638378291802134541447328262870373095536319119115119140629300128282163693511322931246449037932833674940582501107896305017211385940072328627365805663496954064518735074223714377369290398718863793876497303951911290776076122067947706203411674492867800927740845891849934861332060330236336634723917572765048383439597834111387647380198563785777794145525738051179745303383678231412161113133942605024063620328322703555565656462603543235542042984260451686111799709634382444255176500546292609582150586459395558018364699390675700266489099657316446301946581826542379202240126849934910912868558931433144973625223432392118859951887440867699439514851341506853414334237895704532202439174409333244277092883598702815272184127667757287240600274223931644433671091414331058477384254625060973568291745034453342900194440929826341873329814328036305074498117916480109789372126495796048260938815666147932893483714706179921076528701196927675574268130988736590035331349462972069015344472895144320614804696327063560372593305600432102262510661324098675237067485360371492273868687880227755927031841375786964593647786704853284087583016294846162546734959344114269195764737896911195186830191503521071816157349329715344244136854971067010170959087693185122665597960300117627163764479760552858085191464470489260687023937031685794313915724792196142127771699074980641337821346334483080713617505653517063364513459596087174650042053773070189567651978038843999776372610400828325431430891789007301700625005150576043982206253140174697672474858515867041611276394352583073544272990572784630693292699911979703790641822258942865794286997140044300905419076248457553660618483675878168971536645823698928915887109995795708063192528800450555007950804506518791840387259513156894037157297109265815722440147098477009667797432370102604397750559507945366295000941122493644164088474183182664839318569906046871500359811708034706322212424685115827667695746094718997215325486267812289182382122208644789523307847473755401941197321666906927576798160819855735607486246511482384220445744156475248653776870093858725563008474366282447530309030622192518013994916542235561418832191205642014566011694651969993181076648961283234370111396371915840117180314072500024748928311523333853988047901827453035116324723338615650816927325306577992312918737829847137985618550233067215604744340020127297606557670751519277108106042319641549699102952291567523578428072973124872802187582340544698373402683268773574344708426692264562483981536364309050005403639846701166110089684368478472994149363768092180755314457289820997189017293536429585032773978355354340014739202957373022323306360188501901866350563678613553168444320980230754068875607446787303185694446192002129301827826367520456252315657683853294446924990311772580717501869892072274910687401985934279575126691953382961266124963437308892942179867284655410334152824215947183619211466802928063066957123734699964465214885125931235000228856514672055868887381179307500285455989581867081136822080844813274570497178209194001958112384095278194623015239237856854679620365546323303303807968674160930405037485876653051069904324619264975361413873788541429974730458987617239566493284613622322935159693191941363443279932715888955662223774452528314938553611044143345134435001876748620623541479199737262390881945707393016664275798209456201909352898996420248662514301074632758954823833043660953896775269683573311257810629400748452893211664883060657569839682134956690773218488889758942729303154409440238968860372782419174594142440738337549126554152532663791119982050063909688740835614382637234994256275776216865841026232940432244006439942537386724722230642100389676906041987672673654630049135813158413096433705678422455003325290781196266022165026940195798050447653716445600993344260556915688109526731056007316332567588009671572533977850310870335633093961472394571874542444940341973333898176894302923661897663197888300924990304858577068607883515520695482024690060098801500708962543257512772098780622572016098138362230066310975020723631893856975884206725089195093960794967451332897621960142197824552332086182152891479631952072314578755518079912383899225877350063747970340697455014009963335067297423520433744124558686189564131096591343335367340341887940392317077630941504269143479586889077807124346496691249523460088375046273752554600951505962455891222953118164489854772803703153922020753366964064615612329316447313356570951096376465377643148814521246020918079100854550932557916075599539362955441508126557468272290387987736142590552134783296440178757481251041120210269434452086333809458506949693816385419993828948185933981208035279040141380577787104429192252302702512589720602784341103679346149847628301885244901582552317202993422254104132492939729310594604197346957264801930986940159949487883721861146706949195172583754801166956061516711651516692176411648007960580765585432731814147451463603873561091806490694706136644500747841258916013974645413992241852770285704523555825922969157707662840707497650889849350399895962025745478830383874216019291083463750765857721370356215952310712940404578071861543482303254364017983779629137643564802104669479399874430243006836295936706764454774984333086631683094155201415851773917610481895502329036996342644037018034147629991153330888650507333412372446108672175361488878888684788760369469599717020154621868225625549511338359794815952663587066638203238701000529835335670264130900778389392098811897397174544388142805004808825588392413820014631560715345123754081255769012907389385319983815426727358005893640909484027240395967160363091536922277145663035464589161027651177162432867921346430562798120956296883201502379513767101025199780735698746013939617672400122704376694582540221972529184054510609845832676974574463489835577314423568365951641169912820519454305675190071109752437069854097299968426277915168472683449549027390601344305239922840514100130833631758713683480490400411984885826755580476001065228247228368280082371249311363403201785541714264545615291642839293877634887870591232279086061102925547972660022447065340005489274811514458906204976483136257536517462119991428154455847856657740290829688746949039483952683163988094486247547202130961409484415893115239338057810620451058263726495706716541917178107003359165752465355608332321078093394852323218157051789897235875951194410954109498355238298553074174381958574894720629410633416544849724517592379671734685013743220442872184774029094986834896749707849205251436229676912506908800856353283982735189570930336585525998125849064423319407842798688916665264868750377209927833429297605414698587994555355613346026989886927755430181097299604404783352604622265913820067068581704993360908880023374616428075529235080984870706220185815042459521690429453751145413038448046763191616312374095996556935173130057048237460923034509593492524108282821608076104216940719228400986117946396083019672628182455150722530431814422373660935120294538522741840781816529994171862952973020288736593975377954248738967141302590681400869092974550315870347839291194536251975530754081920199717505809950077527442020574386381132271234562105190484745032662105705509582730376101377625671724611960989123834591975402310263181567099186908435223061369279622860561728020310754515653042087184907783339828675149509050832575497742919424221891512292705204056112832789583270269357116484273440862186582463100724639168275622992155595432015851882668345454469262438846833632145431077517308937979424453011122279596321401718823627422329879484496585588445447048627454093759117264994847653481453723795325060216859306037111824756730664505695141374015473726275961227640601550157427502673670785020723051217306297790517672578832663347947065634474737719935351082290666550066212781835507261893393564237520182736943436555741633331291109434233002194429315832798551754477523999988966193380519805350095542436831584937868306912135169680789690115415757557041744533599156334326783288951612341406833539097012581080489202393923535217545496372952488222877514375004116169246556922265240609286156607716004577173244407719484621989157782849019507999845483652565052418090047038245363043442661478345724945497026513423243296690654209031095463134304331120080990225387174841320952044717479356389794250753749364479176014025883911517210051994622194492264942182864264522094536535311506969400222935728732682540181568334980017968805243167664374343327629567315524772062849489689355830555466630317458869230516527140556006114428551701961510503080798011088740454085739544633575742183978897697770401643914433002787144713950893547442305151975635610472326708018977572570904487190753019287396310104872574125993995632087681054416141518340450186170427710525793429572466442706664724143896173015167792647466075494488852652572909766576578651786667324394310910235686212920766267206045057034697734283445051049945316163994094414637114751461422549233198561329202858059946639249019799062050876984656963879738833235348866310287200010586020968307635089361848817256076386874197730487609891292854775812539023761592721212805621359993549575131672032406332686834804955343811844074212015947143719819863730043729258992948486825432391556738661014806387821538578383521876995608852733269578413127627797624468290516835801953421664585020250962521852494602553650493795171261372974550097742938075574562138280080519170631223595521559694591156527562824412974391919329277271380190639037218803977501578923949181372153623922185032339523882511798690044287188423752629476289522519309235624745671610571546301410305934011018574630144323014099256199748305215494308164037367290947212692388320452486869754235675668865917437113383003103911644080146765831786982657806983626542941218031843596991790497884818373066609277487173544590736016873690375943771823833777101178145573223421759144398682005821753109188407777357761369328358385272190549534890039291354456489165207549766281930570226746544754591916162465662125444225944802274938158091918910219860223171644765455563893235085691477677096526741437991409786095176628889308761949945402517986923360887640027368120142631962763221181954513657241048073646516887791304007420021835052403708801280481405014697361732152379122980742331590445424090202837297641447898848472964166884302133567620633380011028656129653075751227482827053933341390347527275424373624778975877255568327400485646509894614661162464195798149822881100183708421074135989419353500422323929192920374967109296545007679506493782974238916026599424646816468104135804448743508229700368552145990159555706607997741050547191975970395758150651588696102208330920125758395961078786576348382072479319817427565783885362015338094567362833774076816175291451783483778201800930612357056500491295594372697208724342815911148579882036422099536034695696157209617259155879976592304540748192716542950759100194133611899456944739035099550805421522544540194248138142693195366928586265873927780086047032428972658034458007697207509733469429449248404413500188569694311192404989635673655449093784635749783168225483569803203309301126055172768188364845219885468872168218433773835967744449034484263325355800619075114314318572071762204239056806101653962078287775025041405359493308892793112360459179572636085240047286967882789719940235069203394508281725106833657298855795982404275398759368946075652284479290432425471905289653511642359400468886986594414495275659283938446873775593318654199848069496352333328052047966899137360079334351250744592160303055268082386705415408960274834268280740638898745663825047808247016147764051958071747944013845561650361864991170762488555336572905364117980083491986210290778260811977013407413465139570564571074595331185581160925278050180273949527947195123550388191837256439044818057603454308804982528314856739069645806455558223701331471104721177687501194777850647414613542657397904891289004381208073627702783565452536887774642405991002376619061664940178509838156103430276396021361770072378797455610887523200314241133997299271046560813324297883238655891128525519923512736072626507557740602335842097579393245130999869822954758861637913955488416129366816115667376779034424838916509689659873298210810742219880830571064588665282669768404804078600268090850930980532986268029927625889291021865961658263787108202074822601991730718951638427479718416502337826702071358017923137912726463174923660352167470762090775887483301983538270574441779812438657151019705571789398183348668642210108212921810010871844455147663805855982111043551241294270762985055573717276093886320984730994407269255800546180425325773095324151696492119275191579236930805275730858561656343235131320810820884473945506566216859204547434500375181021672096844396015031212658501572414030350511572319338470487235097460758008394268081649386419353910256152613602220405337738036034445647496099298721031145648658778368471143508566503452752881393931406405605187048907526320045130628329037918128106036495435601852185914413328933970882519370228079058628008670645226883241957847364972036395217385791897499821187139453147211976851405538421898640881706232643086562304812635398688717646223587570005801518983318401283054044665674745502081709511998751784391259634929253161695692150981943825326173513393596422956916600981352016915818957234769298577804097207084777379432794569725510338693533293555257069577251154750903653757089843548284181855338904421462220827804627869062266807695178623489172114823037109894317215539801330752666422540124123738366269197455118827037520949188071720106470971559881373468738384228625479279618503773555865185633198295864730783236978034745444118568414471617657793284156654014158796938071398796177762725804775771234066508570765831533049565480216418511761036859129788568801240157001791752002839060244603158268519234633710203467887666225726849275710959902775385239702800183567092651681493661366040415343053146606753125810919483645680546110735134347260737801907256006577314555934013641361213615114188910103865321758937691082370021232229183887028669051195196984850205177643919021468835113799076748159259176762750242213552766023329231573303688555301782197782276731918940529219453732271195041218073275572195772378039144703996017666815944747346809808180543043287534978461431768836401592875541844095975402423547475053747817994304809306146608307141633161992859821373273067610749070577967623625694546940625491212104202273718366949216551703022863075458636651706170672791973394162407043960534781324946170016637017586739585913289530527524027260287374070375669351725648642353803071734797313147872648702235964433275387124953717241256596802024746053151074817636620785191052486614365882359390735795299554131062824453956316529329668043441650807048751238016737305662879729794772683073604446405495710500341843505796189711119714545521006429438074483846303509027641955810335103642433864450156409816955105049719235351977117375938615819969535440344325481896630346930501887376930339529730553432910267613282468831604056684455968554053322612731574372672861109944939288782555019085379327625626253830059378085186148244895890647417865902368061804251020493657915605926399836652648127475135403437761976512012284332219071519700249958021591579614168285758211518336595557543727279722060966354579392818218991205796121279189164727891061640896747789135392564858684658002361058161953310142646919494372813743419481016370611870126626061224181157682859334829980043630490773646398540123209119265263558807446460944491776314613442703256518523716031976495621265110440512253458067575848079048143794655111242056773272981909189735795864958970328592631041497417221520033643765499928410019175207181106240905331059193995488729921394939341157839553090308352957443684441052034496562614973635170093273685023449508504788055412857802800005446661553258788523108689504158578117089870423923931825756821142976513240284316251473487602567893333650643463299861458927375780886069039994209008365865818358496341473263825466802031142197886778960055276203278333908769817249422031694511460373939709133129035042751592944865235855201193706478760771561692319681674194974522249657571322946062646443194208522831832503667665966952351811021487961921641837865507388055674216429656676641107331191334971761812255262040001398280830300702978031590370041259800051698929563830312267056945350151417527251379283641205717907419053136143257818136569082573788753376945047456489127823560094671138203391278348108990438542014375084345269147384839401681099761536776471382248837790865977942057052114077103771409710756446491102681865249191442645643227444870316054466302120031802951875305540748425795658334219743322475319142137652387827778811364930209871660464381464219222988295484145861984135306502374692725741818939888237909174730414682690682468640816600341502181843861288558538168019708121019520976112792468693862042350341978454652788972883908069409774578026222485134720241211127021815370049928579508116341115589557764198118790415184278539485032158104728112759666454836614071828295743280315094014831285179963453481934826258394374142809729644157743553362313511772436172175214136658900062898307778159233849783120090681963784843792043851208611907307352758085639182237847288232383775061476315329371963643170714561430387643221542155454892980346049481858433873187526246092609467746071415438689716770965660133127329056935318150393224137279393989616403575138538660636654095572961708160672891283923207670927870292141871456260269582721649060968637264390047947116295211235512745599211910918075840373580107602259114143177033641906455652855629525178964716622605585530279330192085500857745844316174285583358840800828215438420090924020582130469937624398405016541113840862084411880136798520164923023719856433642529371623793713003514409274695686059174245891095297984795384249288878116809124833666783642492225794025386888522613723767818794799099285531465687164882842052973118281049515727207487474792310793139011252922181650117430160476328905140000452356549205501826315106582516149902820922757341386995712688451651958646687873418243120495630303602077561610284642877259131279900088030268431268077712231079473261393904336149361184490083721316847277853172244652817046687432246484807225557754303908761739329458118074847352780376796170951259442588957467844977399253227524462040086261316794656445796853198242545703814616291531006391010850124997044286180978303902210329724753017082942721587279810828977164821315071974104018004246163051682624470381881877310265185428422146648708917145252161647454190751531353447408569675570803502096573643018950724381440653735234468055534006884586811457920972408670230400554965277246054241323199855902066905053218001476132610407449495356689301208343703760117447605624016194086325418317337907083479321812833567149026153565916669435370639229183047581906378861728565700308566814196396213090230171679762602915559926571750407235573421274229739207960721768233225670239881063253222793398989099038806225174438771420031078663636337523332293751778551513881939377277351220292132750588606563745520763728620341584162089105716334271510033448270581139497612848104679048427355012321763450678121111500144652494963504609195635339393380808975601141332882513188050107186579672595852246867708206499547951684745728185183044697120561207047487868227387272925523972616704577017849888071444824019500851826603641718303914383018243842825432923054439586864687963955347937756091855819932644640474578363426420571727510596558759573718613571799498479895769014193289291999400487859771404673182546846098979950388630818259590661007548493203717477854355763301725920697205746862351189546820275074666168044251383831316789331442722692452113924182132777502177853025262498887557530922379106728964649587189715767576246439859289626970233920324068598511778407482127596443180503808230459862023650904878120340531590421975573218364513580142249852879054741224846017779584493748784345340561351239767969898868453954946361259572886386390854294485863135588243200673298904932079811295739020375726726410891610317786409694337894024360910064381684046224692829137658874945772611881424583228946154107920716560210243349884000957990579087362740142877763760845862171466246467313563566256843643105158333344423247489633627054844963181657084989005498221273203095983345876709691443026956914833643100050099953225333326795146679032133223832663005872198010715632065881678886548608815769297805323812777433616490757776617932609604600363026411172877373580880638964884630554158301032412403315349661996783447209791025028408789002193560238531736043384209337975750042582455585304717496316208764166942108733679473575675091221009360289276504123516198367773721153106995708967893746935814806008498542075182830415450871226700415455247030391763328691365241896550321063459129170846003752904936354716660297323277561479556347113079270970822635307242407734798088287466756841500263098048654808748702424703739058779764075023582497054487970147068732208063935375741070177776796786207749239473729173421037728300611495090452960567778541109155492954415687631327647685819903483026518685303030523440294392071452784559374266180082760590939757686704995940891500784946059957836900161379805419088833437072879759494493290782737388236437217101766503050893919460756450708860973579189716882963803921757089163324324573505727952953050600901633721262946830115846417184089714666748617446441679183041916663469818188211109743449678383684335479553167459307711042639589348297059173694934918773228608978887292820434752722282048653680423719927735966927422128500459121583492402002327020873985210559005644202743400782129679042756860396137100340310367410745725894687492859478675181728818651950446980227233077282053686077508412095731350531269074000193518095117727594901640272955043798665826965491337806647045131633124471709004128889284459904681490886904893645476936447932516389171433513497069400915132400152721775166563188696275635857611023197185565846718270678462655624147941896344010246517276475397711229158091778486947282198724459709786290921357012828146166662074263692559419125271549599147744092882029462322098873124297448085079343989473404684529493848255537001083439691142122591133222200925542556798967563849913638264393567864755029029783121118419542202753038075986065730877755323408241378027799129739989336923081644159535584313874983677428850946588225270862138582383205784190443941927175545727202196660622089625333566704420846937875430859533473852883401172005080240360257944456342693428899602069472023354419287878398656264255743796783155893771841107183298813581931197688232443532186956993453501532673846049819352558602811612991289492787019032188039266775525112472483561915675309759156899724022611967643728888747294676886880258400679062061276249008819436038270392459021701480508952604566532569693682446773347233146074924902777455541551749740597499651662740524757729922285878726785233861836772491632393048440406860167615711455577609012003201350408450559331642700104644721933662627228343922946853177874527465215291593032428930436122702700873988683190346141820594891867287023585072355423768227784364401797783357057928753872252759565544298083360095054044369627276501478843240574171420681049114627611877430374427626403607055584808171716038339659863572425838653153306141319453262282645604607551762888246500539860064002587364553580725603899807629299540581351021319920240387355234871525178167491496822815682119774247876939382270234364100048250233942183378637590673226295160455202063488337327546000496263063482578107907863910630411076807288144937919595759592983823801335083012715842809440469518860168642760206023778035234497131193794708844705247718848981187916695023781177208828327845431794269410143058675839529512304803563894165326223688525948606472652157333718941683576290084150806593808065637785123366546275424058237334893366296549916961096446272182228868168161074522912622835857418236715873866002911046481024423936151816611535499721936043822056605531090812206449415441877947795818702248295950255548211348768300314766615960599124098340437305637007752464626280256034122237621782127558069169116933985679656130238305333738461845396150097594352782857432376762496320577073305206000727624096796257779734470234592479773104547437374237554866111119768249093608932379886266632518198174159041664984241560702727891562573148472123634083932138948442592880504967688766627454635427286586049685071076817125727009323097479879870027266714831959776820678827936536091500720583478148121278619238790178784488129948710184367466208250604344439737313287795266579922766706186672324885790039652249283409395667218372115062853181654311467008617423004435200343047086903424486578244033098704610728575276658675217095421857693438977235515089211026869556963384472125996189844779130838947123175631741804593293650200530857413397213949455668718445098695595496283153294572331664017924337348528205012518464862586030325260823370427107957901646638002309158028174401131658976224066534613741895342565498457602645744171299221492730187697816069200334092351547456559639499422047300689179742040830022618570843475646569356733661362568975293252760280613617033928616543025066653533553246184633365283674456875829302012344632075706927355557593988646196413884438492085066227351353969060151767474206931900133897581003050367552026531941364991228615513130418477396297687949862648866607828379429161015132874183983778878692067064225878077659464742160439249583230844648528586214751361426041527246681347991026163707929657391246872177731093082476059984323161171126368040988772876321775587906898492768411155660373161786394133289958316282305570686644064107689939841419474497759858351741323053812978830883425069323843809987620535354620788122383519652427567737559445324239270743717425094305386585752631873072834041487896030447688991282011804889949901973555543656802499336242445443437685444763393093851796333054284737802198709179307902050426088363099491992277303407873653048838621633964861765518861235520476514602521107376223554698669003811448075707003369785986494451636758116349173104649671173403620988397919132495321956638931925933171449190782978562864311613864168676860423092436595997139453665669843611968566501206915915653206710943584138506688066340211332883145422014909981050927911993131188106819212499067172353205845812121496353034774116147247115410091812159527844207636102641588411393319444610663059484694532572259117007324394489214466636170456445377168387791392361002968360842862663804072923026568755365146157189563651160192493341114528813512094274642007934440800381758820205385102192170603378367715998343570876897564260591294372684308594890992433407888135841181653736292832291404916054343887994513157763858319950146700637099252510160573961656935535691715965413780264903996783781715028386945599135052764909657185885697748349821174138327992585873746024658379435533205058206501824460384607861836865795528885854354218373326738396426217313238206740811504945113300697696996902609961965640002010033411058749857087554640081952804582024132625468847325380268249960859016070131022062035803878520329486353286558955923000676713674042684788548998525903627390493554445123653871853287806610314868137107277350762285905718129765180069952278902174425039628608289536266226392952034596265907030010952800439883563976402553299776636827376746825190967209039393693637254045663747000570835297567435619145916059703111359679068282076074338554612276947554718149192458949259130503520335900021883973751122730358506115091668605612654975090704186755454654925116186335499101835771260052367791585371532727516635209205368785774293738242856772756365466895005236255820265630488021064173277534499935400075789710124031487902878771190187796965465895089169774220478799790314048340824376197984055569260873169859282265650067412687517283724688859418604921932107126777786280566390571803967761954654638858321897268932596040758538754756399541019027040300688465881085781437877557470361598535618837183915907282281079414178713209975143775280971891733637574430364298243952535697581961333738575287899519308136832448951882918269782073137749677378977449236163741528356499868983441163998704124564155613556389266482980160877109282229709186186103768667307565012037634382946065447573264689966816302706077635010137322616088547228640967140563773954613093492284428346377269991988943522776486352926048453671694471240348273520082639742994729167999398837816696020777607916300499459829647099070694502026837184048417938643552537654768380250531387101645590147699467605687401369068955847284269252659927092759424140428413104742168959426403799715114304177975157430768378635219522638831610446267970876662580686393697839235553399623794038175495513970122781731376227771502380854914745029558230396071611359234083868399761623063250243872397376213182230736403977193005725172903184523930569309810687441841635573228549289835384204897579724271160180955604096596177443274935079012129220915969723645851188329235188441252449300986506632769679718290102063226261589773337855215239668282236207947968937198532486727940127935909888040744361621772946890362107830418049645437788795123009958449772147497264058036616475170877931855033391241618930009351833635514188973994446212340358672646019057101179861950917698972786453626666954810970778148834378335848462732071633091726085586367651631871930013177402062709792763329749038992788356696843840689260236253455832799121131233915371456697799848229945958043943426739767926455523432669030952593956550901555302889501363790731678477938431984047979872993307909942383597042736795973847763718298776271483573377664767541040591146676273844019967435351499020578616943779781096847225624624726645669547363113015878341144033536367507852464649893458729952500858278940581370646999262965645522157232192396545474612646735175264866775337493488587291549520832281494039630414736893682472429109851067561860402445535420090050099669426729824507915074938800962868532711256034322289068063871596693492697029963764108088752892475965472667874878517676681457032643992878598103629093862100573933325761110159411332490240448706286692575108192371432824404391767050596067227791830813597294462307995577322271345882676763280932721639373454923577239222918967796076787826162800237173470798854688840860209467283593710114997123761063537406601550054943642418891166075219589099721940739736683586976929478210590243105734860674819429710748368552796886878720175173086205864323167532990029444625917725324838273007683528004815148283308975847313686561101567741571556376539138347402567645679840118774920655477075124570966632216120137511257500934606775998571000306371431825039044380894677347803767292792224149245014001664128879080117747755245435382225364960334442522338295277783676076415237817219784067677653712839307693668612148072719394377052180063322614625062342564664513936189129429732187031062184575772211932335472821808672789591223559515947957242365314655633386078654071072584502796426984631845627664784107948409143997943086055767461913210915980367536440005195214634589235610125163415361392188884811219622073415578458662198103334274799873975886272175919240526661836277432030101765422171094469878833001368632478226726498006196483340450858374626411231605656891482197901555586269374351038465020113886321059363464025485780669052351504427187042335979627355237205677226515613117439254880343067921902687368816416063267284961480545994621084208782058413713528752350404635589877496266479156965859923936649791132718966829614749272447090494140174701285654702556773798067080563289997689735474332716733374945014704844719214754771481687729175723860955472324483873116147204087118877533999890132695197506229895742973108780220587186398952895682914422388519088307586832841073413787746703022574412324017237308569905885194344580398072181083848520980465203882879931569148542867576347789913437988039488620763640369853935264501880243233974661256635947662573492526601012998091595465772511232257884597139071629245766276553605216380695688313490618591141977106204353405048634225602471338352816378059600438076270128191772447461926428056886198572579251097455818840049686889270388161719625776639151136796925280849067922381188350872151407797761249252102496180692616797135566932591075718924084112271807341115675913763654533938959155745209519527161417583979888816235630913245565809638343833738519228942483755338330181313765551319974849044385698218259128340912605552000721384412888708850407311236235166733910775324636516287634646246682418881606389489487302411039593692836788299582697783033801459966782026059672480007555086782423678998073404382769156784845919077542328504288671647470016023228607674723686687399755509361990769927402511117442536565590299630230407332562258501912712382704146290933075295353769880422820820790901047438655392505495147254661496283646497653670330092493674232469803185924597192796899814244471389263821672985849942208251094409214284445490795925497089068720764037324989663894841507742044886248052296977946558379107363152817955094241455737402599629329548047116159750904183852884799517426248083582197326410512905118763236526999084114597588459771824939755688503834845501406492171298374716994436617710708381309404856193927186752465252921958376846197274880097172312662674186227935245201929883069503985627606054251556706371018728556819460747188818158413941056489230139001059657110841148388575563437077133257368408567428048395760407324351087426070182442553719089986826000416493212816527980471674504009620877394101448140324581481210377850978740936505908302986779490462572632364811671326109094703832601732561067131713875851618962227037691792625445843349299266413966946885725306824988032955125330163324922906426924171202640718249243469363075692703749273464657842322151611898219459710004350613908873333233983715889154314085181101827084165233260828215692994006861057536803690835970239330087624113808588144623254975440901213817591069895214536364298403841373753725970828331056853696749840179761257817450386344564383519669521779528028650476920080747636332440680638846439201921113577694062886116749425029218436570164227875461562954940993736604406326744512303655447919143497931888141846010507172616631675968049414824501036138747072412423321890431251922397603287583754075504930943175258688041771916480951675906627704983732372909286924238033617071689751896715402854040396093485150600213487797049326258297942944605737752691050350656970692324323604963031261186157667672948951292256381801171347847941769934812966337328488692990433298064991297766346738931661874423415348407710520505537581004113415084287792397615006213909787484446572977888346903763859568418297734188961650510821604246371982476519637644950202649799159554227526776236613343958964468530134506379911452953424274392187469466774684045527090936740586815720700764412542279598031355950885770903887455372728528085142905019215041693302868548469334581595482863733058828700392117362919133059197968673633332827844968064642538688965410870073975523242730242391556103534289511860383410104827339208051487710665233430119298923569057367597509625266484511737858795256043921802089257945618516952316911532242008422411843463168421025063432167423450765264725997930339870824793851169515782801524956722059331143834399460615912744412204514539325589011048012435728889380820632229344349594006465502934106983571376810564455335902492814835252385909339841916456076957271197241347800035637695745401229036091657933776282703875532913279040060849891159721694961059706005517767135664451854659947441430607229792723862089847482460668387839313328036716952018604576570432379858347158564456143875582467986310664661163128978498451050231245040428580618744465715642132935077343455218811077073768730835595622619408307921415570577905405731964623397853936542483995698973667000017015993321714347645177775299453233210007855564375738323213163580651784338586263172841725404963588561224018257253104862372285560883660495552634967990844286290520367275886672118404795298080359394486512707190701832265555169954556416434461140321386725548010397005670860203288728456369641979399744948440973914279817293912816027532679955972176514894780759251348544657546004295659194043699069116594937794249788912905123791130958808140175357559776744993714502688931665359574875807678910771129570140232204279400111032699053273630482280315506027830027148710177132789831992603280139104102813652145328910722555113294482132208680042030928593951315986275792394919895483922305656490705637088524610742335918981238307771890564843310261147717178399043334384423183410711889869484841076598661049093387645820998186128576834632957640912195098056206463443979508949726721047353691574875467470595255903154760225062680321842010620001072940006237488600097538597979395993249563565268781625645556472539905204050694412714172429578589052634556999560421473026565583731602016310274983126489277740463094655614043669736044680638329050328454182670938526968764878026000559812767353766257641468922111515472429086732659285448820159728815811894404659163716064221807753045989046923337892172303657928383064550708256021802597971788933673511686629731306703828948780421804160750145758920740355549754371988622230928836899967294907745251773663678082158157174085372182981660828217616847884505682337230969293239312444695666014179629175171912302258250266292235621115140644547701624280842734124636931210051375786877389473495577708111981912406597355197681880319542632160422799755099694458604709987098847869962245710439020430477865335638479866203427237746292120276423143534610732046506205943654900250331070915197257411107409249777951137736935383148273724418027204310564613448989102512161576194205659902023948468356493779242209636185754890146738888501512365108887010453821505031489407122561586849391867590507082220454909417065137507600452046908142614946287413566391143266590282049190453291761420766057501946458665903805975528627030738664109202116613309568458297254004945476665265087612730193124670093524634454161181874984018818464667258287099859994328106784090456741597701944018761671203247052693846503255231714150221996935767158119656249869065931519550296982009909276353503486230954413238349156397539414787291310287049929618903124869831931288330065463853069495322973912338040591283230744055519663861728822639905227101230638032672871219257377673028868438992243122605461373883814651555801533084741235891672280198512782103693112281145512001425900992785337827498940240412904608019528681670323964959030277617368156789280834188124619703274498995554476207635156014867604397710600701668844312084087142018151966719439114398035191994273197349511208622835663308309506657643878032327991286384045440517149976945710107972152607134878761169845849032023061609661051137130528478286459570622352360766246750260496350578980097237740978153285046979660498512570557858665455271835623674471380873832889968087705391889402435120182417394105606607408631243652966605990206802994134845786274535995312910537282179856774554127223986603728157408228660066643818926310010794601891666060052444803139806463260187620905959860404819968771509281191928554889006394193071528263603232347814970584687606870012749967174158995607338165194085156346370984992679605077391113973266088689744625796232276363032993801271806363818922438183835615375193833137798306289709689344798116546257052668740039707979936579279617684184240834844640890312797720587551906589163635744666278477054349742845736761084136013292194852554837792513153376787959440707344332639510227817853400658772837936642573573019580595929102964314321210977363439460401787281193864409091242345350335811606096345079290339866980022853090296210995899302200166914576401168481429784602327463126089729828421333059148450886910415527428919568889549662078655079731122374189552823647919744939284099274961544079605578879171984300177664717262470304375054811975085197949133938741178434237150797582763562173542917869424450086183914984038663203739390841308360677262779787095779955675916791899530188105574050573640149878587922270896042266187744557808385303084615359218435790224092121075448984938343068354069621629056791396231610913630457815145412849749248105848038195217893640859261851180102673457281679723415189549780317178728718178581039037660113735886900740768811459393986641987777717277532598237033543064175425529031730241581570560089421662522714585881546977519018294174944556605527997327257577468250844439086937844866897260017631322224240487730947980597717950791983666286686877324895069623187190847475659577276281179091652764741305310651031217065360942089494815817988212766940932956740944911644624784557023061610933521671464249777028243514514924301160657363823237581075421592940307987546517485921843478993559609911578422988395507510656149525534462632343068871035225756758906694970189776026388873416366530702024916588227047461264576366079602868779182105451848755188683534642385590973076223659144501714938533564032101100330646217989824698649788447379352349203977224338582898540223403666016820451650240339916826562347813702207308056468734109392448626210992147840413615141856659309077138881202506112827656928497297332532834810587711451483145490875222400233300961478657819635892148246942192099311343660242303940831314822678364917849120681467702741694417281873978531369907746077617514244891703142398586750591254902381465338378889640825363830728324358558461457130163339149875768880413874840602547982341545180196893612613309479134327055101756007334401295255154707660943672439269582504482910446760954201590333490173072775068581767833369141002376254165919409305017794611565592628106319876818826448960148433316395396351667479469920899903370466497338379086049762803870006308165961550927614635075197994534213148244846604295652347611781795177853940908010357880385938276095297860784915751231539802004783368665694862160653889316664939182552061635609965831594013182870828856207898214416703576769561232766763384243859001266517465640635651788149950297865657281367306279815972156036800770362031486686186799845431204726015494818096339893937775094304615902212247778102048708669605406589369758463131596599319617923619297036191675834533568121141183408566534050556074792183976544930098563074941784144137303268902672312078494304414033072465347050939082512923079016559122228812983052448595809910577824538391285406693150052651509217809740709514971898406790373462470548521755824666614937048535163428043153394380863037196368468007797011441204329016807689854137029165372640348728536108527022943527309559953265464563137070896733501269403341398742912266505940795192044222904990712821637955546572976792798280672913563730882655134138793040362476142708073914431527569442596726985992370922669326215386248502508731413321987238346619584194588691271313584178501478398158030195427820542797521518776069620283413869000433330387285185894015069739205015675931651013675431986510049322916424180916235892357903020478254411926506736804084614879002321252016070141955535151558458465825049733455851291679111279136992383221877840549802855113133667471455826647644701965162123103192444147244862455269794982564030042688830860476096291066708418301100306700669087760307536711119751367085847954787075097303274800597504302734115609657927331458473822405192261960855190051710401852383710553092636177179730400231545861026012131977218788734978131247864616042716199336301837212956269315324926654747392915429972830177490154587490592431275602512189389228047331799041964678099865800748451320322918947601925601486720571877626489490744457782394953356170274200173470189473978054844877320027261461877328001412132193384876217882265492697307699598980356914654182008041535952247114793289532685181156636669141360522057301478816665989408861250901748795930249297770583161705433643715856054954384393939372676365199569468748443987540876902466877881742917847970859508293607654054436947719578148055271621720935714170121196793428929619802090633373673884656660332794065515888283213408970010605502645978996636650508195072100331069737541944228798357848400811524054561626926687971365019627145656181794848395707874662384434321875655700197511707257745698164200988424130048092429357120744275362740475486153951237886281228173759236717904025994107981219050182043711890421001659110198820311860270861895369565025123897850405151239369664878914046040820173113388470651244216950373648645309745261438716056489596399058092218041313323492588345972580047197643678758614851737762805673838922143599376056527728117681663379511961933688479075581054360964424683879577995910490143990008834026641951987622789195924790369466182357336223324395446228393047344448028614179150663813867957947036188242170393302240963444029315121267227670768789018174859702360633049879135801651160628157583767372313025943515150650014811699874006429230959415085789123614652532122930035411342211841871039037539009184791854928097193364538062360723103596124859458929988746986589807554599476221321848954354171009832444838312049090435631736778454607176400372030583311183450361796706379420170848529265064358088638489628516434938075678019934957096391919649201441364076257826302123261052765534724883193904186912867835789639186047681488027465684490211441519791055235999022553086673727342206522099752274404152481425715450650015585399625321764784894054463608199457871104306978993739106873819564069160722413651625057883278515410861067584354318189072839251473562223252195130112621592716958641304621393438213337774738568940673956016891998487900858388863519811673793832427431721184202906831105996056594891874935992315239726688314607267320818918054256016407484970224422083160357566667089873829727641987658464574539545839843796827624797125979924692592331923323444033409139731712499120934130930339365602815293691251825018596570865818216381929613926466695161342596625946226222313384260817114362678859526695077092468766378578455042936254843688024188263541834678188347562861843059907034376840451125987504361808591531444539071512763755023992801727811175915492044836205065375915569389710999446815177820769140144998198781896769841340829558273770802382913743595300594833480961050625441891103952319039565457055902201291465306661786052185611406462598557641653003952405704868022436533528716743488470320747807932532049415569819711648608618961412561205713314634391442389887412528566475113839605056050310192180226376362199244879630406890224982772620815669332749139973984839850271185609367394608489479868427075440741490146665585118311709795009138266007782247532665771924073642668114500993054950963574735936373407702456337079538706356222864522404272472320817152672283092653598916477314266241760494443352660290130353712035704553196470486252980222357166429068271527698002322487945940548900068694495878596777187002680113664904330595636360307039874882328505443432318758807706852111402194905804161242506738550101476811014814192547547331649355633995430375321732574286794328001457085431137096590939940886308525331725258270673757076453700935152265481437932142933537190995408665655388775910422851612294685393465610859636633781651171597429420348954367977012510598953843175183510606739107219967192162980035926536672512408414798620667571644961925871920532969810658513764160826196005684355076190822315789774225555874084447243522659384681911510625226022961630963760469858131946338139875462109598007150636598257794737166949838178689330222993891078617761845308622649425907616778352168882899348351061474360362151949660904732126638414650064096370357597117062038018274773263226135736565872996160015838187171880689593314938450411756101088871875135500191297527750064210475358330572437172367134413647755176551263451980041072792566820872789802653573711618444313744995547183872098477064980579239317352186322660176790891762439882627484047552097357835564309737461056160775198375452246673765125312214657776062120433239532861457818042467429909219686232448583444137992429099274844501846390704395638293644365510312706487434358910642265981004637464035974319621454909155782552120357125141695876750314915828740223322665112026739547942417823247695841765625150271377109500548119494912137669614395725995512992734590874951122390299665652866973788718674991972894346939673302922739780960963881073953375332516186900369460703843066966458445384886285272127721212686790670269801509433087861611999618403599332189644460152146401477995866088455013220234469648231300550359105305606354637615882391446195650144072764347539811561777607049318961568759013630546697412376711448827717285280078511103533705418983187459523824979728079678137632382116606974662812304269565793479529948693128610616755412379667484836808119222033640373842734548097621015634756858802351232349237322738486828933614621541589884527763836380474317988360892144753118754538653759615963836181581504954631393806799151086181081034506254397404724789847321988746963422127102081728849029498039965841179270458951689610711654349929279414767838434893855446509275778931624704543482377643841993257581776871349162139437442475777340070446784452582491450928182470192258025824280872182939253222616124785120281953599925421973817276279935280657739131665521740999490864113867296125284526167699532550549070365089168060789425179284825941134119272342286368735128763016552699736160561527909024529270474269704238819330571295651005869631072834609760883160584879258536997519251030299106676584576678541895510757423153577071134736262978358225601139641008314636015733113204715921462480223763133406246084886266795718517374876535601806091629356878084413171255132049464447112064150465163713338076894685656962737069559844113737480009964229407180961247860461955929258692331305415249128338493588928393562790023408648852716942952511131591385673916062295740352857519569736039649664789429513095186568709053775875050656510674347046961481918652734649401045438198542886963874264713733596567659846791158816605489292575707703961944782163571885726727556448479694036231461468451888546232412020158072843646175996430848113859346124995997080947197430468865268270040459068067453194720833594698609506283552549482423581335871504130583954135226008148946689315096027123001020624629657667941262981951369460148238342375765493523929464093289932254473000510889362334338826732171925741161214466817587912244212248609179385249345941905557140812904447878858229246255079232137150748266829536478018171923640165435918481088516656725793168813927899638474930630484828103704113988369527733951273775495260819879458482881902794513914382589457776566882146215118886677067427296951337330335487878115638352049978098697823166940365311352561811379610414356829809938264966668116138896091702173518366812175563363657660737095367392622871251268246866156180791927996521292480025437323979825122166915096318944733781259207211406578987308271507996563080568345592576748765666180733685875702263286083601083516208385734673109198422225823546435684329347343835061962747288504891468218702124645914129298713145710255532446179411491623596232012573267370827999443552761879070308234640596136911713179553290982234053064313710503339409358340994933351759331714901787138579391310253340915513364740388885643945826943501467950454541688798181688025212308756054738667477575404301716922685161480620189718369430803542004067002159062860732276944149392999005244856431304487548301747172462577834372704768469742792721985527078945345407786547020705436764455216692595739791829822800847702820354180007352753588287622334621202985351661039751950796500502799070577969610669763504415193672426662220118348011127722524515367637208105279048547375376988494746532344906484714779466735979839926362916559359911308955920256152562277511619922035721650732083439108361199121104227101688723439320864123725589899570702499567456802228043091724523883960002629978104817963265929753422780545661345142806358291416121261732104348751644288368677165061517680981223275172520764866118518196616701227534074467102318549078645471204867536892036833277227439618557185585862315365995775166029396760782946171453397114009772566835743333572540231668226530205538898753044497380262574968083156901185705133003906048151933770167480751009366228919987994949408133970849556204734679869606019442017564843384403204998055256804414624608060300561484172378298184630876633641783192618867193097980891620681748574779624746465101433107077080430868858445243193424918151068206434550544911684245680362077442360713258449389941653928029458619044711002980715884857730064391171314022887482448337369521726994698186318840751582448230579644160459445464503857706629698890576173197325949128030666579562652149117700378430455057965990673503962893446188679186399799836084156521093259707115411090079794917765080686879331951774266983100403217220482814038910715353808694300918644192293864444101518887580926653286328131427546148709038628859804314168985023919178888792636307735665042357733564049668013694357393808023398981261704009995945611037121903892168650306925154250539837253399782501747417582100588423418855509762295832741723943185068018078131300704990525279723808604061443008677095966522491598317381633493335191211664473322039148014901114997205892885956679703321962429727114210404087959497609155155915045253900808470305695611043976420878202934262597305071035550347840305340600982976372514675788992702123163065374249163114383177813394858527475287293992712023338869839601177342241076601758979304426165395400008337361885873780208138737115294627047654485681516080673199972424799216558456414479116011697796515872344854872620408515932479260683738133824837879009901090951767470290079375440630104989825696012791256267784556204416543635707519797429964191324033777081219660175004860884393426457592268754606983441324585144781762464666339544382217682582078845768179547522745893944819398312706847438188198053294787542520892516654860970771782384430840889660918783561604274986637712935006293640524184764199744126219262882146725474868227795448893308338346861494562324188000961724504394204363995260701910419240355090635153583672822229959839478871940871213208073236386385763603627492768938472603661195246765907699014929927039927922098332818748607291862715343856698186640481298838924525145098244780536005633036334690064136735865417039734471375097841427998735144503274301682745846638737859652965551786980975712384140571378359289335880264115357532199851870821165359872702738388705249233943261841452287599488288544273347557676955965730734182894480580683261347161632582353987072149708944006791122644706497951192537755418138005155257827534893091024300619659745387861727991596701367899115519717123598085849495403946886381558360077267549550930660754117644164257510405097949751408204819252451906472138241798007898002116328525812903202838833248514686262243119139863344948526757082893611578459797679001154746725050888142394928015463920634248291611795621213145092475675611587590079116786584857939765848712944748568998398330833567554800451905375542734466541568289932682874516286232758051590800132058753685938218614232701297387280728211560468374121717322782536234932258454131925347963677731600677597651173442562095021017130996116107415573961449620652013874464110437420156157559967519741201535823656331821786978949805556930405013275694013603054778604976007315925835351037337276854575978048077061750216439360931795863434956009405013033786400737708456256655391425297576074034832546736302140915552026921776877774268164541845573630920363033353537877626106079587425883938250588359919499581489576243263244743802716849273967338774321588936351157696193969458205618417450214016827575048035625218711745153152169856205916548838067281243335664939917604588449822579177776051962312547794356934331802066877003982868615301775951652645573067650851564287419717508361843392291174166137172345253159253000921613317999274095782008437657349285313821529480435832710044348124385823322303496109987647276885471110227779472377389896502996547197359989515913307097752211070561146689582405665674646563105466532406435267422983503133665946165162877186538433993619760607536316322744091542600433896858038302941233885664718094074272134699466512763935193872693970191603584804983491571006310310609411427582652476842433542219603179434291398064591990000157366162186380325840162124898172875442434578810145112356455814550981526640670649094025610372627828476200725654651252886008624959555947879928475774145201066145046052593358641321859473512807297493299136297407311501898232159548781683468900398562803730926778703608338001805924353892681732262890671766371932616112396532057984664031714464835294344457867890002772681087836720579442431273191270479144230013828734250155330436371327066642536455246664558245433623520067750336996905200152747632036075237888053162233988413584976937959578300528629447700376496006551634378254033605822733936361486463481780309563708144815715777949365848808763546174130936834159555864129587730977909735846920551219065949892894877563807215565794748162390388161894761851127633035513984404094733010623796010861208440756078956475264263505619614539622110874500064649122190207943355131396565096797905217514446893570906212144630352600168630939668040906331409172673266810769999530296455479507211514253672569385266638739134252704977440234057636797430278102147545377974256721575424105969979656703046535457511635931176639295911665578896901175853568267915469045479859872067081191046916118552070185837774357884969132586062075343369100126047910431294551430229640041306232691048867534299615036070532640295265017808303021663737591331884104646058863625369986594200163063861022444316352269572287052459820080929616928498637527840413352169296321409456937726404175447440369766163181091941697114505402182479850648350277245770075799640679510668901308214127031924844501813754354547456987800972110668658699947719435452139341517240742873552940564621765459786274186747073111501488306070393074103295029255401876667404864048034329951022619269592640012713034754383567294621058422756351705075684200858845522120469114339040166713274695759886076695425168491816821804181614859607000414768733640551577763907303128237414232703761089823010548222555533368081740845618340950871061397522071468894519652025347335552996602232238435570958012561467878780928161170380901683879648366575103503601058507143085651884300778157539924287428953726708191721529432499354238921213723772368856132184040571219401147110348095649271393887230018014265747438949307201546517490588669149281074018582797059715088964928225554307169799649042383150571258770209981442282593056086501732624297443546546143083854474117498258960241590203480443077925795740341872894427789694650667139403464412503767097811635156031104117060374689610298957802237862144617655291293837415322545171644103043697817828562992426128298447420270722934222502441533735481984552360465073100372732337151104665821910196917086654811824556774240907358222493800685923557829266611039152887346344683103251549841791693980432185760685040643311240734864001264774654105467754503499556778638413540128606910268478475962925552342553975597690941719573411684980177915042041042669316705885784492998658100129902184597924899805035147443438283595754526574679673693354208576684141872330460659104965173409425290598489933926294672288800603277815176354251088113640884524201547973228731232650360719238343330891374340104574874150646383013999031900933894046930555708218429244884092084199701025739341963095301506027442528527754417080349046425114789275279526494187477857785972126271209575033737422783157868778906057963462147280228264927832221811753199702054160611844811654913133681622025293370315471335996747306248243281320238322142920076324830470140235356102707380208899276779761787339489441360073278935009907979694537050908148834747468021064290431748549456225544752148181746987889210786252805221483317261869323880043809990193483657333815988833759664423056837628766504315049999488045384308311203753733179573773832755534750178253781090446030903462346648184119058397384449827240968482668588959776590717115646617106445060743902542840489301744024623617752608393971358044201693480113929597885057187685731880098365135524574325243661906157480952423380486724347216316270196145384896064146507036210708367285223747634346407440567242496699878994386035440247875095330960394200270348860554349959057637278256496324134823893877323592158091413278357667235301606733022872449198955444136307342762715988553285403154866724286298941994031574146298737320926299453826121764267838178353342382232284396843791842971046683360820066277217293177794636421798042567780305677956749649004157068999152310529967846950286001376089313400766448184154897470867872982829738761449460125555217129885874231237391318427605971586103172944805152808135304743997393754259318467038799001516721245167432815686229109746117922807416437488042710753620587519335401537536776375776576710753077820038766013851669179218280796584570801882905111601584029814288150597884024672188412559248357088485045112044952006605463114659131726429632430587584242104757136064937190542266916326313426849572784076214946733952621086520491774501452737543785521848155848886708153261268369618827534837857142582738047820695700993421517253496977948463301356930636292560341873140505747635308324072852659519749699197846660506007846572712992379361910326005890486738820212684540986014199780535620360077470570857228146212684983788082414453725763640509221965467789847670947549425757501462280263867628532600030880968061572987091000770556970109373144160070746356942561254589039535001097770989132122442201150042854987805937448448668897832849014768103090481466235431077001221623745235110188456781406768742103416885911197569671436948150093368292292448695676019010549894672721500813582850662871752268479175140591223157077955053460052265752563814473836545567777737535774443890243088448219440381804286640227571326858582737041153476548643873912250579876919688090919296938516807684788438130174705063075692880482307862176010092889366024810204304639422485224779298213958586765068058042715690328088375540530393319253777105712676330362886091562615205053389972939834905772072998599815868406485872793770094954587607541037530967203084261437704363719685420749507591202139507334555859322277491916493928364090113780049886598860154662331354746909198773357808004607157437411401155216598705828315241418509662122458736320513894715066862154206834384361916148298309245926956391931246426785473715722585312771488455918653393263726749942334997207097049249585094523786338930387830614572683697934270501434894701727764097839821370973535218750238702836863122392432275229568570095924307512736002953601250081241722933910273906955336780278510066478137960939104324022155254125988889611962266600474830749990987897191622402946955042410073783787293594498907222834367507827016046210674250496862643484068099416268392627048387793203365681486026382783159790535634197388849138367498818615160612758352225961944844956384222316546311679516096172982868143225537117788179719617565684746721657436954437825513685751247120760708873449980449942111118145779452697516613067509578448225847466998517306944122567816998343859061400168751931550318513190362482286394620034096120947287379702464789016538874688700733790688707391595802833378296444624495595936383071989260858087956370543719749401782425644077905327875709322741275204068346360966500220935054427650382421658777659958813670762163862388420934443581773737707117051388030793436942493658763643428858346375622380438311735490214587244208620516861444077909000727382100769142127561485680550581130546987503076636638373231351344370003001132898686019100753879796705936291303157063530662069806549212433337152259653077158007502966534509524637247963945268727808200194861247716900861080569861272761602440922240510930145357502995829245988883076159979359974517217926515253782247158661326754438948131748420783097525955815868549842044613901967819206281701797340358314198938573069091462826336972104351423525111803419329190197187211376771470711911834394850758350477356752906650514759874689286584521851025556896961873600363436657706639352884481972011411450852018091017746519951522766938219324149009512597238650238626577751932019102588915302927959084737602985644937380228960760878612087165127487000468335484973488755677893567301875873310475467649520487829402252984677034818828594983551680504477502609139667770338377098183030806434861622297835525278797103699434474237915450623853367424727607387105015089348697731215914257276251390050244640291302748514240840740460333008188270418274822486961546503030861051933680261401976543386086273661654412179413227136055479514451877634414524547173706511112159148329949751662589725670887304436330163304501126455995784890060154901331165669026339828018089799376509736320478902863224070240106360563498903126611907346553166417561822243253316886960445687685281072675574648862662934295810104460271863635681570049814451621874156759157269838362167241901288556495402625167252753380278847909565374077237613360518893038449312978795736095128402204425311292697450255930768808598579165770289682592204088268697356774766045040284465766870035703219923421817630274462041367065951656395294785212222931417169940319551640437633835131466996786025760698090343426048623123301179070504066578877194370408099845970839987085048638883452420709357452588809778903393416673693453010237221596089472502313552921092512909800667288833653608570105307026958904176760840886361406101341111788772431698020172744581742812794670345269235091989451484166408615268735369916124783087505707190971972027380057668681153525758958804605999100632813861341539280120844367458757493105395364590075828091023070891381242977348002373952600937694496198106916064685309249243361567125717556632774849924137897575413301278803253003015345768464552974022771841720952167834820743006371625538739056450847427113006706546612653067578017001748436254253785533535082509439594327291955209359966095801525727824816132117653935411820205679345505751151662439920324699392055885401533125102889859679961946864473630078578687602663793680728259045332360744218016571280237386096622200597051688556402431668266052985020760364956511484105068880792610876261857889879856813461053073110343936912147628156436774859415743018501727404721042066164220844533346322349119095912236450333931513306650052330503097274436636718209687211994123611182496131330405873841521015141530718311145761112905303501911316482115847218730822140859606884198992942918153221616618728148347642817490195962920214945660857302115438843658465883636457512477254206930810629699067142430377499683184095137559233229196092128607708104929815193731455527968365597643932053866644021167800025843986130861651397614262041366484565564538580932650955627536344451117644920309037404518705237250277532005040219919878683235791172433568517275932007479044974341730877070158205042644506061651085888344129384891284000577813596370220312801200033423254726023454970435891426087678592471200338182911183130226632989739076266654353937190547972674858375347033505537221990610561253352012174854997991868764366115561643616902036067601330685502503747659277483188116321868780284441010045766429573058776477173776787204422563591636061962264736574260331556263547596708883942477927953016160867813050828378605852683464082948663278976098943419621317077930545774357581114893263322307920412336154617236400978271743448365926737939308860380071626989123924603255062623777757712682220675126756567976920598493083599932497041827570222389583165663564508711851217167556864150882198066534680272223849627320795776430514891011733888116079232266592388670726293753905078286026300809677358189862861971826409126335908725798981634711962698025575636953972899856164821280899317113972158051846879057403659797017682694682333276285714218841816346860627304102659522243873535877825090748378861197736162377243149394360973766979147132189769444162275726527869955014233233926548606621542741733600202685119113081787266252734546233790248228453789307228587183856880041065195472334331935346725739342172506579455504672826981252624138246075108654061160631367241378102509996031730273037004940901530619495010353658160056471683808579281226249487217744150179845584704871195530359298707307231876253767862646913517632974307257076258979980544774366450513692161453260430494288481082832081378714606557979462817637993074182682328690200325598200807671573359506743597331237585981029238098607584048367069169461042353989488863698898194317039477199849945964882105450164790781415259001530754696906605771770498685550015231808222122657144888731443192505580742234249432919064507234195875998307494758200899790110050749334168744762022169771729796302779552486055232251537467047574303882722346173152324336266712829830874759970931080175413900400380002735935710664377088744357361090134765892817231934887025998975659640249217080144483925128349257088550192096990742501327747934583251327207967437309491596164980711620093312023392916974211811924615243014920085312383489581464349416434833554859692024811379779798447506002444170325346500127245089557653404804461003030341301214189495510079714936906431394577218547052597540393264234055559040107374303316800172627036743317942157108280928138181021114791250203853034165087311687554425500459680837599275279727305885292726874368137702162361219677828852240752035189471111622035833141248175397652176416764584282873840197920067796389374261416032854173762598004343589908251437104846503893979694793696816828125881754845702156549062359992807351915135032236575084143185711970659655262762114185867881552981207111602126489184206710310709702903148508023621186900917964486439248487942222413603904823810823670847168483863979353908363213663040435820337385028504295596232829413005630656988339999049232617273062330245054385934845288079294624053053345531242926546299062634795283681107009909096796148644877898505779812266223692751945322544802017459172608702777116217170933117357820374279423816130270888236786664806327794727763838640103312008285897631276149335771332619659786437065568618354500349449673297062230542152060525906281927210763395424970646773292170349572299452461465968502958407567422871579969422557536802688342109528461657240730636329594548133149958488670258401027987525581768203384575262737442200066618693368749614281445745587291191850389310285800523883525584751310320040031157473749189123949082180183119130210082781493537552766880313420462390502781795528364831920280554386026005724940627025767009146154161860138767266167473467659293607278307797011680992344205518196891007614381513807558473076061787679198788186162542429948133879752458434612046176041902830394351346101696926671547284199692866102146098850996596190864239007537264564742374406149149195539400264550098432651328364514517221941575005133101645453203569648038213282130029376715876675879415724358971909805649160983122026164415281499031253880029061104544961071732656650897458559027176509820533394137571426146207901110046992481048132370497160339929367951520086550455186602007401862433974588405376795940122871323685618570825143695743477584049315720394158465622307014623292121010819780491006519856878813297366236365610798920502684660387950807504529664244690974558549103774924483778017626230642933656358030922225841612333835803663349081894402399737523254594855201640294461529943195126104202095938563339652987580904455309847105418682104709625371479874461446613170258004184746805814863015077983227464924210575601934944364314044151444933476029215044031725741036187649651912262007601435894246397930917836983994433242634242470569666194908300988277431692411113755862848167243088907320397485591854282854438855088847444837169197672879167675486503306231396692974207164606194887255912405152413381169211807152681987578733834622795200585890733312232682947381550351027646594931256229519508995697931034350154603954633738435171569252356300042968187543789231234155836539633108990310283961935524751112285151531841587797615248876525874079328429306730415526835243543739337554002978468673125026835295596211643861634846496247667544273957977543555636212279272393823834767647429526901568253242240506246686328243940521939498882592503206133009132304304738282126909914225091673562819128758790376814962695853570923978501635745426408878337702972615214759830243324126055638631590065522204694490549282154171948446141574557430873729242360442480809665362528736873480360487240059058933685861033430728523356057259376209645301450131305938050720928439975467336206167746552124447972845104592243895862614827772294814191405754269161286816965762417953621242586652059409011079959161003241460814992452653122631270506566499021972606502429845200013967854537650807710184420893893057333562916585629092172713002246773629632865471850221217817706077343691379810814907955224901100806845195979747399072737413939637537723679709249754671344218270196063180953908154700266654174227648586135466369653325508172110895236206187084762441182296844467375093611627807392633171929758949561982693170187375056098241629600495404547976366889121342969988252886274889266021110997271661913843675064182531180884118856271182857734730170007194109125210978167811055427195509291181948276692061206015992674368075826704573257055725004122904629499974769915808338791560858976305807514828941051249716698187266917950743991338866722931813460963516716953389035590234315248897904077061303757932578916947455900254995261495487435690317240075083694875175034050761595710113553653725326792402914319247245238321968013423296796977403700858958108732133177968265337556227209653605382522164782352049219317040689565346442699544996652657369029616041863515407211801432572788102235226762090313768911050364970512699343364803635154940736310800214377558721492270494954354524021533969262893059515326431563170960907216224756849436534903379165504054156493012531340578836011580097051339256736440880424745878109977851121515107279726240085449102740721434950074693994185707830054630525363325006569172127458735098202473292998639159702231301932049922783769956326833993656361704969184455213464302616867041341066674735290119793722774538151765291605161968821980336982504585522134679744466466726906848578755332438907085555894657156783864483078958890916604308755576083310718918839139068005253815173864942219591414187636168363382424810573606399858758223302510518909855989683535649938259515693186729218819355487323310798011107662466382752097307858558795216239812826331801644011681506350136222756357761943481988218204073891968603882228582360697654392713072723980332914381179078071940427497800606328498279503414354986698464789522878954226264701331331775622734055421670012805128797967070943885428721592992239464490621472433771281361121432455154069430808722348956181990772274333813324892582309925215241194764732445396811287731329555876801762146065330762661039693902907410369231052049682773519920271862115313314516738203872849848184232919027386310411375692463618585798750198018751945495963004836370787588775404973536932783560358758431201990578710422691531714448093957732306423700067424187253071019693241176835230489240858205329631408602823144143323704593573026417238150103010374067939066483170163158020449086961463824057263985134139533379020035381842575232229617174782228200746512400571850507236933944002988230719719147429060281780826350534412972218605744482233432761330880704193463562395713915987386070977807176315471673600469320857762640568310656342496845737001775983229724066399615564877372824992856457430668367414174971376741595825914199842127732004618366578790249254564173751876529854927931140728910589630712751155428214522477115776942234253228257334385522542604625343311605863215605134693680132305833262114492461891928512037959251129166438359373434511656066605234443268249233258125222776885452731823683451307328391669393183686722938367170379121062612897221981757275502515101927151126629210679694698199111999385991389533213932712237863261125785469047093336932048888456225093648235214353593715451212827520401205050933450927879419606144447158494045667990593472828495290802730202271985018838745992065854499404277554177079891995198311762049443142803869127364651324667422964409863919097875830393223759972123281456849970820283418664579617305211183901563116341295956985390058913271450128844852552529798219663595681233686877764755476052415016863151858946406048216784201214948328050861166245467384509959872206678540788020808186799400268753600989840283804979561060635968794337557914724705357817773519387277124131571573624257227175338100069082302413097777362347273469679243733048304659723848951059630896220553682666493143582921830724698086137340190348067484444426055890235604792267305452453069958898905374741397746078939879936827077094548970926229362469193314068551003372600453011114709149503318589681210573763293930050455616501943233095309858698564573336846138421534314297906842726397463246165835626459154325492648716464525307063156058633241610534764639846561964036378366286812120105605735495825697106765121251670150063423937797986155816718989012510906725788242166632354654029731636560291131482390739384215158800831262656142849811999579279896168231759930900075137033826258734585066289432575693060486190722619122646438212786865431182904206104720848289077030087967849425892083108018719770358540108931889724910601022072043732662490453066227533541710957132866358279833160219889774508850208908199918909207699173998761924660957671178536075650732625210172537630753690270781321063667927937568213039882985163558608639362243148593311229570734329780955224071952686089846222566971971197503581305265455576968896198228707760592573599732905636339176421268842134026579160819676742182691842299512674323406127096342702994512601912224237589454840375931900943833701020282337981727102558450311704323209809189604434589410345212214685533185176331076262792881550672578556579357312755784376076353028912343928331618498251284019684493662927005429719097467443321696061624001821924882490340363802221745910409474949336243307299307465810323051941195197661169860362278870231191992129873556381141168957172630515996489185283275651924198090219870050963334237624949937791951899371737470107945168761979881748678710021891847643647061681169061714864380554012222853074736622508650377751916947519219292723159383746932116613907875037606746136418695855711950364154154631697367193446013136760710200769751701634584105665033502734910387837529080862243076513628699571217556499486583102866659410542333787360340840224990241000094030236063931919444221909231856221232045701588976370015613518330572124752443977145962957186163189311698130951763683450670479996341466597529998692236507600192159445444683510637386414329400164926353640172424749791725619781827201757264701077482575135075865642505478138736388605398123094043874508213502146401038334826617036587755453610453991679058424623521716443777314780947007321361340703950344755502589342298900451104631166291113593833906035740782782417871288964306286134286615548503892044609362740563027001264900446734426018118653511530186682166844477841068080937982261993668210266750756158403116788779816698395757306305650741553379923293474892829557948238624670013839835770146543306457264111809377765362899289657581144785006470483564350662224008286448249520021279654697614395964576606096235262639585964861357800819219992456663540219483032685193532897170938699315370058209811374755067983276791078631308914123522544879614992612591278149604302906913780613734291354173517415531458489378370592707151719715790042030844587730775045751234774111595546152681315851331416045450889607287599602338391297934210289189511503489085457040980470673902805848144223528512577745835115141088342205639613957141558065577066928169329728737335787172858766514796196862068255928659700117767926831031394351944791129405019827983759973576026266820177317682548498292924222040288644821670278671261746098271808270701610493024871252717227177794100144928918801429138380157173942730780834560431812787988593821998123644328047240540889033882114429470297017451388447438633122231560650686065415606676983967276592339654792687558512809527746374977344182924169105141576562329650161012875972421039102420452423850631010061189304890366413794088640245808235468031622498070242219652973160249042820313931945254048128137948735638839140456451564628652233609334525486821882981356488275829585580642618744222718619735695418261297122999275231929904513709779057218959773827535155145793454199256301090330136193006406646182715616915343493067656817902259050190738850562205375986068661175406492317962158396681304319111072999339357226699503094732792714318645838325816315154692940516682972669587962611756255966221671166859766570926599070722466392805061406636402981665839057095712628133476002600534368474523250873049814204487832896857816159888209999594109976720109553515330948432795572562843989105238116556307099732945952781096868836134144813890194234765711614361238181823718125369238812580180540993437734757235226154453195108421129437053466243474208376852121390446429138544565155424455040056104640899680766964902406797332108048337602759836171440585143218544163207884488589542355269639257539160032063002897980401995020184112766682965703017807358807878673904262815330333772017438824663691149412394445267541651487778396382428436902703421557299308696099425122505460080553580463956504175097862570113249569036139194265162975847297036728908503677387853282571453883841131840630015073209274114614582497207352801351298117333347090461417812968934610779912259049997983010086302126019405422777135615822887863920806125493549076944357270942165138856642187739029627097906752203116139366399657358226967967606314970090993894351751625183513352999960444277560490035502899547041609946744167378132250650384792181143480556548977128488673716152246557302776401639692901385421916843998505818424246576028093595402936544406424797808452712027805914659262855676597919674179632002408004639162020042019719860055173202152810474986037207564119636035364296182503794685924024697406189298665863353933909167032301104591578107322387131221156206420353959627749185574000351735438492771368805469898964605671085115070120007380643571271768426542818665389142428547470757534461127519344646332943183603632541461915544997081476816093095401628478270628882147840659410647258758080752908430085060754591162087875430629146518716383413704621754508456285461703543541478070046451085213656703088821717189026776713848298299603587950468231101878670507262824429401825523736087333363615485288755210615110678047857967658797358356994563028246030184584992847147415023062985992105698224651513777878814583882908417152535067673272896073503914902520712615018788448428284025234821934656372267286624681808628011227387543097157463372116756799732900197694242042408134508785074635005794752349503307069604282668449916422578099306112585280942134444243496115290800543276904777881825518608981822395585400539439517177472962756128938725453449001324495755820219239253019465352611261137160551123708896714279098150161212192613599683983951287762539554686029102379401135710996603679306706986417145871313882127547914217648100919956629745879157529452984342099965442340708096199226642248368520442627309809313470547515365996252548367481207172057139118208418062174069485903190158060928337976271521475479758049418547257435241774672404887991745331212291510565865015182074377627636069520672888844748882637963538580727265367303676589172870827585267200031258671541074598811426504212290634252264436777820902129438871708986237070829152801426186651183934536388172330710401138376462179659716936705836876416681927856192833093551217847044967865312792115826390328723514853912297193754880640574606077241337234858454283565867268581814268805621682025087995044009660145106180747202379379120408801866909034000206223490760871754416063991741154338054638198253248463551826042135560625739595552990370597256762907009930321664150430700293776430015181080146513430588481289018668360174464362792671552105602880711352675214318193160803872075090900954038797483004656365764550143785044960956320863897268675343132504389471817167245080243667818958448660798503928727222761058641969193597352757333408007812076166160314398283235721648282201845155495422523953241548983336015880617228293385157530102869884592084961550286927051488797966262214474230791620711699078835316696302403426983095256208497265211890263328296613776545808949548285839604107518896970822570160744716519479494323513620831956009392582701739569082528945558554473266350727263175233066618817113601227530749330278299587345309205070697413829925459914030615838719847710812790182705040722561755292297820474995985232724467011006452849273624860870268858373153239378423983076251877732990225257390822773618125273992250488878214925364571399974552564323293164559203507758345580868254844445523229499995787135609942946952761151208722435878616428312687065984503367538905342164191486437998913273168874446326194090287420181401885063077818656637088711763500920626484416749557929335527587344071627647658357678079671529264510811660645751896457174189695881394083413566113671788953420331249352618658324911671454657915237177698057120937299151732362198735700391487580965358392274314785705033080374067829829304329427872241901521030851111315801713643704057269992574950710943383004663245148853923588830580878222157431584334673092788445458103427020534391499192364505985781525418830598288534253167830434714306142955076792782869228886327976250832491990361389456182338653646891356207771623411528338725727114587512554707151910184208834277922669313702105918636022433156436666112321065335650184433036239439755719009638382810182763414295700294910328208162042270999333240196874906706925426820904827996776114699773473470590487193172142169725059554207117069669825090628071582735760273188055594713726793995781731255152743155010779468305658712979671504502432188290698377504019517412646480113607515290358947831061467082741482268935177722679980036998974512670447272684858725742294591969138266041518195943439344450589514127632414206604606048647477200985722063324144720246110734862052015453679505388444531554972470497079704022051178321695427834950984169482111523667765137979729768403182953219118749794474150904002991612997006700159087507563695714908359556215483274812782327405650245923450522735308369512150119006587714543042402101702077883466715410220602902161005823624368406700383647020749521729502799776765242349122689303355088734584589705806010679705120389547797805996956771536586663168470043304352669830852409076016128933328906552157642353455239312981811977612742643048610138610430054623570539251308872398849004657657672276468313305872839441982409443817910786640664045523005692316011972320783878039683473461870231692909911192392278168758739047858579996473473593046118700959140028202135912774246514835873868979263862615286915237518769445899071184917618160876932869280211648108781303362109330598935130829148975274418482671681844419781390183269103659605823535546927268689020273852444500548366843878515282227899457575781950663270742897322986529261384913331067014323490758195458286186291523051123742169417128122998070389832233088399554512492020721032102301336091914171752790980729588887117773148774409164394231015306414398139373183560463372130268480401353613064150834466815407488731115369109683388469608018512514943194946018218287706962361743571307314296876551088080996594539338192142149078440746524553982265516271571553261498046479901549295124969616544728138545637635676319341173544464165033130736410041903895517545973945711939773374362088663240035064247270738629983933779726784570906983856511317042991188024362143894861258451983687496591699465378134214786678569434780097584682968977607688926206913205529733757580743956668009540453309961159441626462137826794504455181090137198212475832962960162719735416244431009634120410686943005255269204462839912133223739510983556901374153356011639092835488058627343446443901822364510322390832830874164835534260711727155131743934732085990753860695441808346454172335266065926449358936105449841977676278779592699759773311872061430853804828363823465701214881040437636644828846877717431787501764909476459878370467983933024113766182492500097901615765512443301732941952967582530838682716459094455218963528178622147116868139925995419982966664466827660317770854827203960704231950195834849138657562272538060800216514324421883066738889545731868860848261667977066059389178661633137446308803483894842730297499009207105844278510114109696279761420255366149917785059618320272790844091323511656593667708777512829620860747924366350021629512499145954335483772186175515526903910204784586952957226608336082320261740165714843759582962084243312023351739765431000889396812844510500135141374103871263301454228352174510201709971183935593322546317582048145305580619759296749404844691513768462606513567581796230155757260427569177169990093725214149188619688933138292860399961215890855106925473607932715875230655504082918953099433534034468407114905490732351659813307752109131524327491324035998844009371611976954508316196725760357842692720409050481298845976968656821277136408727964898236593035601974352885265391524509066006195430453295438344974835077866634916177037085770105536802999890786160069438434952249468318731217432418782484823441230115497462293887117636359390627649177157229678303085118685279462756682713065679468818535089813081582964689784740068164383355775670685353885455917299775739459426498396239512027014781164162480461289208094847567487473338030915560432595031490354242480001430101014376184399447035468242296060149868188889412708534427439058322503716653161102709875234960046707543955371699037512374195810846014968641511723915553920398611485077665781490950410344622648048634556216890535964394902490582396301869020801426376833387187396044328937055523670524788363711857330841397778284848555577921828339951660896679452025405738881603276290559367093711994818850208297788253792786292960641071591692683015627462020681708833769806872368842083808527119998876270090183763819663921175369845374846222313312691309052373087552135982034115604580051912091465516917867773266456004700334436054646870368194403481378606630910355934070758478310699722606432430591572692414505226429944251659015717874900824737686696192887295766454756393826028589008335700181751403642899750288888108911125866296816725906636971147443878429306772582533918129411217553665594421046479893968048207644094405127603257569654318274838513654446799797211324783050712118192769616837478027886735272154274340352945745301037007888804304960472729656836021371686170190919982976682569378642760417255117534962507546401110659119392321229807374594906532309007598164613298633965918714498052523468500354122064760183968881709219380962986896656080381660911233931253302315976275358697330679654144124251532694562329327656603342062204243434578739721223323557426950690912017562924655602086845659642420828351212949371418109325611033524224117816377481938725290303239144250684287942586845667543796615546534193163525843125118551260015987674106333294699987138481545806389899739088108385195611503672524673840479475364490994907991533963044646582004422236968914689595345853347941493241481978980195082978483680049456301664632242617796830181878717719226072676817217352599705356554733547251784468193863726157815683429705350958008829321936152369461956574155177425062610738373395781802923534114532603936325146825181691556235275827286457697005445096947202870269217443939507002968558208531464961564849491634896035746764180355244126753722843226178056981846914944505403971619186765056993402404219214643421285347577494584859758067222561681452849213435481070936088364165590096789737231389053108290552057095668819354737826014585598255933879762214768698084943872487453729890583005370681081263436061438538532124456962764006422053745694239305215456024831492695212437972476131774626955743651815540610543855870133564620191840474083331671898467827098123583825784233752334794029278887108619949063538216395781217245895240206342014047329158633053392384708941351753669503854556565767381278370951983652196070967407022516055684104513832041303933361832500524654363994154662171741107421040372236337291510683518532458385182299652043618599138129580497073862337323969600418952268690918009246409326323404891820279351107561749951248901668898428486530777432156843398913367294002811421248694612123412688301345697039845807659262213297459283089579331243907018103088378343518794761019468080432309425694763145963954653754306264671067739711276825817375798888797272614974577562708873159417735129522340922509561025248999387386549522607112057337866315955425393081044083898046102364689797812436778430936396239770446077240283051624367917694095416965838626647756019122426324720066394045609274106428776043107325585508275445995577491881348465819338108102383414840310788105238259851638398369702919448361695484794521178855498772134891282923748353182820682460111969095789682274003516410966178745590429396003661234868781725387157769776959152388335649551275693128681956494545453900721388673943098504681344844134604119309616880323110135151354840955008675940803693158108357391126853110967581639957919256856294098574573814073437859542722071179838216536565902135772293234233090506563399520614197942117196008526984787343737331128726485847615688901307572078734896246488756342390839689677376740302549048904127490687013920971065770691547621053087858806095013053638160919373259345355716463319875252429249300118946337557921455916210489678045989613206389616941804638234470701332771680256465118118087225728127601320336411480308977547516571298825647062913575768586212069819636773555912846906478876420646700563194006931589598957715617727829897321456180572549036501930303402788743234449929869914102251940903450198988542382236158394370267795985454394364066572663231366488770950318809549665193035087387313113440256132404376562450477945224412938176656949217452121607641571730152471491110612406097777783347598921808567474018430993610190780916212007955739487060887764114572489732503965420204037857688234775252602343172424274017650604831042977548616597942128186566366258176141555400093429580974157950930385527969606977130266753563743169105326000085945606948998464672864688206781533254508009697975538763305667317630364101429825481164149878108390782001574329128420098885795113643931991893185082492551910682868461680608561002868685523291371897043283490130124005673745531215098198870495898630241464657871071758579614129519206267517241065102519039029887657297475322241512971328910710134857535325120915524316125714454642685139647931055395860085795320696011724578989949306878876695863254810508197717322614107090674661116622412653561839584110952000721689621984907737115292628302075306761111501642801387602385153903331374258504261457605081905328227826239292296723469920603724565170590386147608606822664892143134956662344635519447022980826596225492537046295348807641571239534080441656491683061579267348827324766575920624338444026635790242241245711591119034060293522857079647316925845034904806952299150940468114790889282214612648775576526975140240827635600443625589492441042563449176220536757270271308154691146533930867399925532723299508398469204981320280361781631928652365748971301721838929344327141601696151399019322476905208702361017530097387605841815063704494902172655271039921718032571150224947686170468904558008540677827517346299719178418788748493551089809148735205792256253904401787545503960273493464092282312729928600945508533767901406077812795574444792600272232228198387270826650785890769146136041940818490564659657992586536068094100764317010364876350452243381369159667217820335215033781729714843290382200466761731285536044316580518317238441856871709592147241491987746329473638058538966540239630007372583271702590413410747637952108639358908909455135100846554352930018208365492659194383394210497562664700103442021783672105765388961487417525423780505043015787502547908825651617988298317252957078687499876873704368332513076722549894933293917166916135015636800299672798870199623475036574317507658319921648581325145011018430785690160104653351006528397317642208536604730443594331067362137199605812269512149542989273694010465449223959364546007677563032204368492127773856840848829005006187651361654542586377722551280497099157718703585097509952370433562036475821383516451593846243038530704013048514256016737487140638550896840942217046089994051206009006177166026069005618507711820040877147838648939557339933939702703680417353137802765841146283311708647699181778600489457322319306755250135752817185653640787546440114646933437923271124718219328425122135162331176784716701495174903249164685918812928199374883997043399291853311725237502061032539621156992013508191519724508305920980522023740096096558723405890952033877563264394497270930133172806364276696286784193503093805561463205241956750239244766472103361088065408215562140535668390674034516498320321042194870543118160924606839585250826471404808283755351632436939041679171278185415600810506105267116537671318901700481929288744942127685228916024991166255844307809436405463796072986383360815682995311468196783562391868312553070267072916491215350699551009730856465013590234830876651462736372875912492263498903848114168719288696596277407364021725380382564073423209043158786178636468478687631331019692599362731771704174068932781757486444660334621906673475687189846777913598232724441185116091583997702712908129594827302191272914300686506047932123865782899574835630983596574831850548287126549009235005577156568218424003940848706583357541312316308366655183877394122107120388088416388513609029120837810747316521369522891702066367273706439870696860233839102871666363636304875171768125682539219495950647939095417277121654192774918121756403466307565240637371982133515714656099010788064410696994189870912091986333566988578002479883881799967321844937662099191592545974157028256227409568482861380747049594939571729852473316925274130332925193826337954188846298626415890220658646765461105558635535427554777095101442933995801321071258395740817234247496017391048718426621920932346331069008744476388504531417543025258773783583899496668712209472846993805970199551126906263332952981050103742481446049094330304140322710211547615783535501163097971946042765493117413539002945012334175881843067789321442959928412356434212015561795263553830568110329012456721108308259326989177251604861939150032739581013446824813684892431755398163234779970388585450122565701173242331502937596622284738376409935089300300297032202515235166681176819125138466383104227735783258339035806126564498067483945087753086334188265016774709470931151774901355419735231565682123724232318409898965672566390860197555473638601448918520206492430030450795018567692468887738204920595504668085306179964783096101180434742216126230216873928892500292724638038568821984792189859450171728678476492810196844145060947005360652816425464700266443098146949320477185945457413826879512122591999867791152688841391115672026328529899198501262972564341449463110550426741936374323037373952535234521661360456774755081957515122780965389491064530222422710630848863466219119111838457295721161046744332885945951394206140970523098389719639470019054132467093770309508037282456483521985932024001928119667627113028421083779176158347949419099013098736579751389673027891551988901239456443247296033699326421598100912281377678912414751670107844350884169089638857096971054234601716853312721624808100447363313796553122020571527612080219949801902070327273442394540297071873542913843581779325095512833890749981527123293184471370585747550455307035252852526872849764799268803573655478696303199948687814426799358290099863911324060863466369982895676306896529745983318874792697202207320976749508204770569250167477098423894859164980208107051262309463038184001423235786344533193488555186700145629157504115670557463510918308079804067754737729681445828652464402674852377784998701784683341484880399034212695572831663464310743893010850215416764430524562222278797128343271091787918088499188984792677727976151540493668893353728122510339194026134857849943535718045583576078115578088775427053762390058805387754829395199349047310495636117746679504665511513285929114382184428790021649522252409777441395082854856528725167634979037698574048193380439780390709020633748021919894713799024081833548541069906154997024783636206915292689794537856853069515276175597703600969290564553101105179435118395468834430972557615035244266111103688820316756104078820894444468033314620901943295365673040510103178084909376689408051581134587236763575986152145266269264548520644649904128004649585459579316431016526590056606807177019930362502981782291001619946708875675062971256057176671016784362789521091084031389886285491995451383611167012459124983600565459664337510571491851155283678456138700201401467433633735927784414789159812927790258902793355506148381731130122763864676777721988559404232404036555579627020173693238809512749240125243528244007701544109489044887273100267397775214393201160388714723250616282325930308887524607164572540550879193918960600346938659409838246791555275537585912839541868473004627477766227784066024972854121675973459394152083301564830244514918859473380351820049063722982370731223945212381588665903524907386285842350954657008241684851770854507548230440697471373442291280885681642884595060020220055359944566769673309475347957886545374061136435737141259091814156291324961673904861669473002633701423750271571499761358375984205741576448594998666833418614194194974864520455884480042714462808118435864819692845564225918375649109131717453632285109597392353562245676290890279893761415218831162992830220270876993011308082391561458648522677646903173433660555453198630274477542631814185524925755867435421147234936503881735755997161371613601662003390081584278123973196252507752055888887345277234704356163562064562055629378561786796140674839415304207714460049641083448018125900439845047204717484672041868902817805566548140337976147338692436063798473551563981483707731958076495008303789967929775308361839221845248936658748324020196419010288274792727989047184416524303559939931195616145272038164657447797854773067665199493330652480614147799384175017716149789592602934915251597808746286205099642202096553009714847317550819524880336860649527210275527090585443589790258803324253926702460548588129134382773221982971530892497496834007810668603894362782720754108261324195777619739581203307869680308922798977407824945886790468301632053404078300569266864339186564048966072507864108569935825250419376436932418378687296060059656245306285066005848417543441831538328739889895208750035426970469027830661577354910728183248351128824202684216651944802437175809432674446141015394677854534612899165994275425722780529027221792931522583162061241236323900409429516063290283043377970271811876474372474418300043327339479542578440280066676159000566348921959401737777751882824203015901341123101815087254109554441334420996653085482461287656286306668265427750858936131919510018365911290209444247986305668919513504368720108011714097974149791349877860141287546635484811870642959549508802641745086811150996976379126793182175521479757520960270795331322728842381484236757344660643563371369483632030444320986533357305002584793461600346220234071566043299096684320723855621720816626829875723616360825496576050983801117454312560844503272491200170797455387032747384168919586301188669313601873679563798816136213741291637557936397529250549836787904775369300301768009084562822398008696555667776339187878028102487722352929332808506016020571716242133196508724150358422498362636954054112327967040402560763680239852952802384402158031627353743143861801703723645668572959731444776699434125904978746789019009646873120548918824951983186756771681164844165066289440473111819039714761764633586745465537814097654538360748625084448174727558975504725402036031587907197849025216063395780943754676641344448048860414669360714179303067404153659486672198013336869546679678869366791177730994357045991557637257027443508830874763810255267944752872562212416463253843134250803421107899958607146453780659769648781306501997341923155182705258069524787694675009024856073115327743726297907856107618426872355113568298960960115435165879817947935938143939366646877180650452493622157185227035613034421175659047288749263226185096604705236117673728285998181107802822344395494463829652689387815808122693212848116804813365905213598435867539556430313949558645150435951911754872604683851654624709520120965336226603184682773205202038640381435329707186309225836452364398193528096200537803599345226338263785210433784482686197209566857686233611478458871902353471200541210019081127595302611602225477260002495299629041049774076085263891883867466461493464655892645555552106522314327047881970674446463432067932863294154724561664642036128702824146594068224677702349312753935533182481403262846266979811844747360265987726349329216351634969149983293429551373109155125867258371397504774294408762466832312097356903632872297929445877281547515095060871253795284120323292721215760051429922463734976665897880806411772453038449715296284019529618583917230637707383411013254941818058294288159124556775164513021193832385671492454191615151350487541089926914616031215758781137349625870009604454642062117465460350575806945372534252494900807305541706889338657792504377887887380613167030098762422029472114523678600774950031190377801540262979899167739118114934840018810274171349994103843647614041635995887892990850302818219404238282777059504302865634287400550406548428341104421479598247476937409408778606755746250347256837064678393293881712813552926935132941213394606321060705640215032941720895239516786176856178522936864797508003269959847252285195481014071345642357029065820929536247994652092763589830680090808304154870625972252138443589770844630206743245141509632397021340026665566134304834506422579169566657587368066031636973787147233904041551593299953066335543074393291020335709219138683281828293002540465288686355902429038523638136438216509327327125050865326051858115449982263741079525783489343700710842055215632591585606393914786433613797751610006555205034219833870890057156737570467025096701008854310335737158989224145001004192744879880467492981513259350348727653840426441050095307797286634847806873412872684850527547643671458432991138199520868262949396240286388080747361354672552070945776068175354064139611533049028207335130269091418733908728063630105011854667988800909935576222163326472200699349089987998060202035077889333417874541369698946813762447061886496711292667750711168781577875556888587531634945913966583832143452362651319897922895240400335600104336720743894506813039049663801568548687777526602010208886817148656595412823302800390754415499522299623588878633168202379089046830987718369744065910124222152482488882107935256922266979650205367738232813447662925715540531699715530598872908277034164858514336933306895359254647660632855816389654655726852276555653308356381014021557038720270679101490341330423339555604050796719465769105243261934802028490361640491195030104411764589792827800290756912061093014578057752999314894223809387531858966262747312535931850057118697983568638996444966404042740851902110656369224357040908247941256453793550469664231693990582197212355243613067853116786884975639019017135304470752439792232282161684560021379532080402007497942331779831343516412906452429653419204554207639717851746467553147918022156513338009919915400075198148828304162958174886889405523716805544201754483114755966539112903082944844860375081932927543846418136520159659254668723182379653597000434690088839314055247994395746737458668207087979641795720727920308897582198667797146201837505469103278824660314250713903185966519017910985062899517762680790978956290070006058571597895448993392385207472240490590099814572796064064745615752400790983154925582134510873726721894967286088423764187643434393567971451158672150154430246811988380509396520810727928508424944181755233418098120979760221536079960493140715326061458381515133476713877642412555862503475483112370920220906648535857395461193507186685488946536166432341948213155897201797580986139709088871266440126999724609940275770589601889373006395733434929721310957591454109109416430268907656977368574270778215034509695807827597601683692533857584673010671515224898238934706552021676959774324854452549618671273545465515993610625317463318681219914243690447363485472567444831075638921605362236149924902224715684907426513194423314854743539148046776955477260936162621989618540278286486052165523797380999981118495368348644959958495242272980467284538831954838113779859124759338214591799858215259512087907871017838192305234912155714405773775984761496423197737084720968894224031771371655930888042271086532361138059165631312860752165325905506969946992017126869688293369556764228311471388199409832352229090307120215908920790293954334802677139362660673228736793093414748049198217554722066249762994250543078965680769109074591010961357069957719458978660855199036675323151883218360759466422236846692246377338715227938851637180758311113634944304213921727753883994739371191941326536777847084682734856854151369817272662660917365486000781813210806325694162681093366385048008715064034959651097336256562455120693801740854540596468901153959627314076640321972908899428023743604176380746617250974291732217700413246429527086117530561904066167610727625628262438203146557865699129866975979502342044545946616777437700924914275975434874545508407234904249241418576193579149302421835611586534788741783108370191435670330658571050113182370687003848891674822175708537145542559818927482079741242454936437963536221332272454890674600988603682375376340798075772583258155288474784873137477154426090704531428072993847095124494134531215547365116805197285445975375880679016534712476382169647259166177138024077757088618364290586778119402760668750154913325190268156491219639599269183215647378180939738661570280083722346905018604107423515729107070862013362355240938705021293107672715313366157445631581461910579096388470503409621125905778887116709698815240218044624307235706641997010549299731388404083884390671494194791469743431684326977752908412998014500316732046579878848359212848453617461282164095645928953330596962839595814022016315920521978276958320808085525745272300747730375292564260623023828581497771919597700714274393188786144562983470413160296083511071155104195587164596752058177850954953979329615710127075803211259874066331040621353127972744273398437018252269615677071111915612091727355171399887875101828540685023968532940667786907020658506626812028334253900603924840295785428215942370676135383680352588141815349224485578489645116198354029848922474687361539120744586347031107231181726600452838426287913584601315377863736560605952858337710682171164406464164085623875039957526132550188601746425526744015906768766359097601632104893087517072685931894338753993470290099573737062324458994892366892770618913121187568329305818761231386231569618172437015290297458584827945585149622709050161629915934942133531378653683956167168199229427311975810950450570405833553098248806743877686850729197774833175311951853402815200733438645455724478198421703637059123033916926598407551268368284384154501129739128162728038663769150020318756090888734449710732921024855993885131684373814420061125752124861881595192224706687158445896432154137665038835951631012023893682340952880411856155912168269537934988567275339341718289008540834483050508946717420213247416778560964465408322089374818870088056330373387259675465294133146599231429808716740327600610811950537709678382090967607676331623219292661633483934313532414363582701211468024571509750068559682230177886930636776162822615248245548133863861105464719025761171690956625704246903723541524744401282393143924852893699168176110309480793299189351136128653192147877089864747213373111193733736727415278929860885550944581355646346349534142819459850259284624123341562598112283755156579993280851160137006167000409865600423916747851054912173489984755591064305826064962011198249705279850463241555422336224263066664138124818138474969291162322506496650101994195230452368272575845866374316561129050051852790712950986482010922744587874145248257739922040311139463694139036148288672039397979503535391355602959513129501843988457646892157179589880116749168607550848643656223595029396526241769601268110674902498481729012539064234794786717509032657486027536350503881781974666429157187794675875996524785141094180223960684548507406702318525374913480363604209335612419458101214579029036175235606132103077893431066813374256645290400914367309212994525784190255345468601800156039380059767861376904392825825471860403676147685735997621007771995590175060937946177251831292361221492189992798287351540536692327467025675604411828857503003735391463318402987268181347480329246694680276400771484371304165711476240740838292701689664335679075844731180108650317484550097681788421913949719377482685044872550077939233966529144414693135718035998364257344455141195946366979519067376351016928138030290043569269647801056692883006142658545003456606992928757379495674669336009333883691374037042030147264144685625845327254478511359344426211877605310774531005325929936204284406562543439269182116771416818570132520772566452942964446999462516926739426242517047927812951454294697425076383243087016391831852425379052902699505885999816330381933908076472955399388755864819909411059717200409457735390183579607622778607314762090022472612846910412798585555548005735255756711605811057983356259892913294202097254483983009673441763602668006086319450658737314163711638739631373587191367783641693115549074811136753936597311141673642876483253073959105841527998270889721419502781964941624040388076581628933613496541495267285239893525475241380584745124373205870763539183136837590241113312586875419367613545467556393458819101032671615122034091836669667120061932467466995397480089170217977286650455570818802867681773558390016041189526043996498629556803644610334719510378844384859503785442165297378713006666420564648463087808637252747529439431745158902410249156358632914189074571318056898347277235869262799858568378670880013788716303151834153933014508883408046536023402293227185715166655755979151889398565782168984994903063016607024787966767017179848371842933633666514279082033976684841776078655502449058606431186586019078753681584621192326408541242514916009563337198939692018817517667914870602754335255229847462053885557524037205674545243679551127425529872423821617896731353573509044436484685407097249092828848236673371152714884046555347199431064024747980646625287397967154442026798627395079421157675168375158948946253444957957285524139104327390213795624219275634979202111094367656837293082048600131863804695537977254758171876726746015105582727810604862264472472652300031078728400886919019955222978620336030469259028181649309754887997356971140574924396017406726498554454769681789623001330567263056200925002545758657935947140942704406370558607226441894400934582426060898712789659362694029680615489939160032247899293891247865986538846374043906468028962659128037884290715073865951396537394837231348415184326912844522299909712003687310726175358912323706923007764507309386136465003840689589913752925858803378361479406493953196533973824731042411172559049012088842009491308630541209549140054110222635142051549088973303058263383490133415303954519632389529983686347476646635747245203245440766867024621300943336394436943728317415645114956659335448144255991510135354082906914354384171511331502644935813510018730110683279823666779126403881688338180128681009669373717016689057658306231429034701675445910200430059839047907110966326552934369270018199857543377574369164236874543845893581866275217579676767854624059426822893721804659808497249609392568819382381456405395129769405902650052823299750440506667379266462138119905354196663273082263579315421249136900437595818008743887712472105169813891719836218316409632907086196527369968685565508382987142587012569380891093731477059222193467882627868284559136356270717994327797629600920451210189905073835264316760740708266673963181695771248826483881427401052199837982122461265409501014430004034114430461960448219863667866058303790461444528841742009684284098546257219132069195960651710982163101999675526363987033109668605198400399885607762717284754843654719059877095494600790244700351641716242552646050161124518095363259243284507709736180804855460646749046511035417636314002818055272009801799080164919559108364437135862026984915437775998835460766855427111313195747229806137206319347412271446455550582448329132627151537367431607875068673329687248735958738896016827083586631729389030154304987288980353037805957130580598070726605419642739547782155667281706900699584693592990935144107805355466585262370645023418679062452686789080565067558093417169887811545548244567482202360360358386151966331119231763849920293742541260886957582839932656763625121767851397034627570278029561142432264769240069729335037946539658325074040123626734157817213133406032608808356543146739722000797916391632570851298572924130284154397451560363927799324707722847408806539938865192015106332089078154458357805028821508276801984296561631502917541799676119306101407395332380021560435550938652000467754164467915050856181826522227082366555240255436635091081077414376046790883779009445813403664043916594823926269678819661828581296306223998535799799269010909150425345657537130755484809398513731030546544338669483938844898217765542724184127036271561434903275834084825252847527653603675129858704311385539157509366016903271823590967892947700606056180034751546511410820514559997682996684917516168978971362261433525777422792072060311118982185705254380718770984416863704890345692766778479875128513583783377734290529893515024565993456304507818716456561475527250150734251575632988036311442875912200131323321021573343010611604968986674127340224084008616281404336827272255678185584428685324493262189942529046863685222054061481940966646552473425740005568911840332223868695100190533023478396623102738140950637394183371084035202392444434748143312468303679589147804664195153824379818744518266422029390829709250122667869526132043506158576939824582800098395873058560300494764064154399425888585123296201226858687393552705228907467621684747709429610874609879613706531970948966746715250331998546358823501148715765886896165368857122725575065428261468269675968383437998971143797223859178043225027321481854942302505478492720459663460641942367021682530515360858594690193810260386489700829455069726884177457807260343485396591783292717829215803484398844864013979804137353877027716030200206630110582923912721394606029374002819438751373173706669360051851344181748255207713701087628771525680597136618338236860390562435731552281387331647474069043687088816993769588573818787859510361279271609021105194134473512391744658205113234468827305623835072322714525898676044368598427106582324095914493664324680060543778346191285293204172708202620585297614732991185768657802618831247876584265314402065400326577558343868150022752923285119549614336596660548238115166184960009674766921278850534785070368843150640630582444488086165946763541436929706926591889919892800343592670427325513504306604207305039009837846459115340958546405260423152041989982585921319985572848345665517957908654931385896088092450475873140193922394398819473996880717038429567992629962443190057711687045366697674261763107771100921358493516715588000305707195208160560928246532089103386411332918639454761947990347232073107282031340437706136210431999041532879029911679354046068583156272700777874221755646051678837221291026677984538038723059963554565168960030995170548581560137190306980638285126817145747399743408042800252919686629073371665424755996624793254433631217846175669191371954148793923231467223853570985434050400395320865958882668580428691763411069602559141545199912987418487046294163188421621409994033311375453006167105053345371342270959743201319184766761960862205501141812459242624218115384148522027280206689010104135201943798376503651653579729852368064200149525278689841074734318300810499491168618022239658699210868556366804939649884275494855270033219016848374899198499578379838133111404598230514787025656683687920320382772216100641561334805363359148985777490400196307555667444535486997817991117080440766020366779271285735525071134636361557837379514969961290043389199831898113369000522625571876052021701680617975558321171624972139661183095774682136993467975345377988644235022290255985383898100852321450542577342215034939258182592393363240516751142948194449827176239824943164092584080533082533821574603741552374221330937909036235683691013319100978611232530770115500388213999562049752438564278942409792190135601320828320168165456078798118647139441351927846194806592923975237285119826158799968758783447810888346066316608510210199763589963919463508751584890601563552133857861146512663947794743766950877836320343137563819551836860962216883245962861184136326617885210246482764880306088810224692700159464866719501528369802980451521393895044953897375117346061225090548665693441213511176565776778538649049531347264899520432238599374661702975988345010359944942773048523698345514958454208516120294922554653837405286585782555981759111156173019394625070649574033517933586025200501785110494291935748442685875781881256075069237275649666376842993211882783950569295803582949759541608038944751133072850322343047757101745372234268762320297887235823968521060225527786150590322183487483783652349383651893982930831086080177874534723047347879639998425688551978226577718395356699110192066650493099420723386749383138002002746396634537115239862477153230866320221482709534733566685479910741873007286188069243864563163358784784207381542263867893463175542864761383734537817962675265110330521005357335537297988149673696152428994540819507061790729067913120402132039517475612839939301616126112984266771116235064979631004054800709817628050687195329479091241482498798127923011832840694757686938732788891129341524805086340760679181593190129039345533765516375464360951469496650703256608565386406746143905614555118561593352813076821503485298491080503108797193791540247426493119225776704471713022705604641308761391581470328581199250270504904135487322041035397523331825279614480876874433190415194616315756799770215204397288672381866115949253970604130579712417164195567787991803464505813398760367079946194040740299282030571952804706090061914208791963364605108465677134261249336496358361912319187358118522935676737459095012061412273658326338517238319164363868615467952138616432384274768521293349116437565819372521101059190018027707078291690236335038226677747788969814267673052208609420429398903931714814249625894439847652707013327002868139045952645405432946089472171692613542133657495219000996850344191852593737975971327812463572178646023470806970332568065513936032959258261166125493914143678028913997901791226662741737684347786437823644813792908487702360248500405509951698412575661708148366594068052427251926420647540366024957131927406077529823181290804972484744773203306312405380725207384654082597204722587664091343312666961582219930480861270933728475492637127938165917526845104035707357315828332294051030768398052908733003562217355569887401286192830500607549636379494333641357677405581665418082359531959818625588291901516634058430014634318601817296814141700660750577063993789652269751467729161158621438210873596341470369223981317230091740262443982503935265293431446077744467969576488607416304028271890444791565601238980703518028068951560754293531458431572024791184217827711739354856160100329470838031073575703491828109286092735495658232894447400092831561437996962335806550339013809897796091573481970976507027483497043518347740889923587079489739943823998191866574240969301041690894335286207564190681080343002359253394910962843396352012163280795060458959193303665689626232153012059221705936237280494005668828001224995423863364692883735681898606970248214874447215568073300179083308536071068465842353040264533014025628058861475280204942695551606742195556294408572227076976311515830772018981140637330073273378268651798409143180099132891701959339640864737855302525958985953515057865906695928392817420830815267228226920158876811527099335258158874804513027554066259647471369489118964608503718253299811565232855149814658643247600405075471244815891009082937697355902840084898857657214243377534826441464974361607059144219650837636907933257661198008996109032746579751339407185158708704402127149843002927014239647622078720526064427687365599969847329224612276063526216666077955631939995115152849262652847957953506894428052477460732338580535400440038759521129098133482899588670807650077094013360373184787192175320531368270570681005321356860804033802006914241550082267862553395077775796684515621997447077932959617031560019369529456944526184662268316162849306287304712513668019744442966119589978837260108656325840892410015506427454893698869956989775765412974403054699507368815822203167629123535886025967813609392283623749418632012463738186582385942982078810141545035260116686642998111918568573167658182704664480868077772454806211971548223325989223194739285443784560897304011750866111453503960364168228652157127791320866252384534070966976987737942697140981817707931474932211947052204929188289101844196991192524647779388619757584839195944632760443422413512241028236046211787177517039683197164638566528996610430745361299385852633881808805652073130425052364721454917127208039232627299999766185101047214461901363490427512700262336329529260462921504806318474785128176824761976264531536077859950539592773993316815214571260423090496226863423441013421838692761513624230076857719941574463708508492980863778854375831926486853418316409746015702050810394976395306706860782245748706901878662839418737121971714037841489916525279732642118105556941534372466605540619419404486856941973030989447339669965360879944143273096167760370178984935980987136194485627094237814727035686527358177079174445191007536287652363449530548199024483333042608658955755358440239123199016342306640065733236503982880372895281439110452920457024995338928078803555038857514089321229883664275719808220085715209345346878031033615169670969166435626511170962632089125726501587059845973558458216591299182768778297226552446376969740658781783890094759743576213762765880690680317463584797556361656000218627682001469993020702576115986454296968452461545184735206233077041699760427033769115606010698599091001534891071527311845909314675066644988820046774208079791072546159004166743967022173214058941224043147191452405333399498699567864242511565588623748075194061882932509887407107283880210629148750794176779644356949216610899070188219288295190657015541521405565400095334891884010502973002558945255266786117428466461024339526439729808505564576780943920471320323460973488337853723088097107618920932647118973279865664661077422951139458134520543112343160233513729073640905229244663660566620181572272760963272996320821451335548603311559247265529466477060915746720535905847081811607554236192384843669028016056544140499486258728325491105330690124263577863456138456529863183777742621334080226503917164881853885829125123126098926306370371168301980781547852010974943006925831583297447444060134463800317612548522114907662011277650828041381542764163945014715008477277394037009510620825132811605135833278841763644476077206236373069896075434773986060658992642967027280180216852793331973512337645043582768746679154087473266059571953692855807686483683672154285540539791947085469732815531838825953667253685362072635238205563569076018644484629536551005847447682063679338779296773576599630112007771513282874020165736880073419094110250217442452746340265238137977971857273838082314413253504641372333841926263951833766247355628839148608362917252987713277531714513961233866193863033044507190541242362151550645885444973084841266058254141244708679420783832721641011927087221265937247281849874449718307229734350075723748100246075209059425899608639646806401825558978721670285598407068044695843526253616384127819301749633717014154766348602082341570227587381715854986316864273774117491989485280722187963722884698109601335494390727814001845313001008748215815498612262447024343826892846099226771918697468245448195402174757217347095028661697190783970531039264873169266138880527636007780045575403039698659325240813934574404888881128368904254962085577496160392003769048637217786958113803870781889780418965669520814680142437130143976659743972264194822630311652645264890166933449489471876353602086562937216044776595846932953608160425848320542680251795057696303722173467601586563477096933866943992350779742194950504872175180974730918526072042159084627566460110538582673558695182471295011287098168969610708765310483829599671313629140977869718612561295537812131849145937031844841193355255647491877690996096220806119229082377192252075126981702391395525819080360471322888163674765005150707152173149367138202946066455479861313613565799265075080160587214694805565488870147657410295265322630482257540427537060176450746445690941646394529611469739494803782197233277454001107773124975528480900390112207036349794354100708498202482950010252008220622392485914026788688924447428053393267331783066707862804459616863875033620829604133257419727060811818636846181429847207437127974946780912480391676786508671450405639440205373466751983362938001173704490046574504998779018929214110302503292495579209800996330799136565402116274345593339723745479571756031242571215303410455244586295672303659358667063833058617707053509799427671303646930556104286537442597073351588777706771417343903725471419907169967178759791282683560240600384546456663250497309963807572138222436191281909693481115919820918619598793170882121237841271457351663356406915839718469194266061524341988595579004975436663570130521596417692641612061739876070189984308563758869713012125547234388326669760273105656543277289544573604563812693381269016143050109761936115656031294003393896367217478704587186318688112267075256054789901724074212845883692284768886477481024527881400270537944955577685661883563361176165459711894982173880209960909572484239283119102886425105309185619226436232638089121081514016567100813551042792882712745793562076291039227407812508799378812650450385049324555273273906087200712377689555517456236365727989332815848436466789889070301020047331135526977856701337406945877389755684593635207190604635902472708580195996562330200028166765293281052218879588522138310692128529183823916098274829089040357417608141484379563069857159856428968455796720728449813154671172562268116733803649997826046016048602953752425677576945029527484935761753311505263342836949488505253496831507670259455004811339437767690225536655723628010023773114757851263925869467315648295103677079846220772258337690965010662214466179817296965817655152508013941863260990889598414047321406781170643753221348200901410675751575578080450415549125516142594219515668156230459285363318273645238501672414156859331381405594648183115298537892318595648149505266723459991156449021486911522164905371496512515426812640677370200587966301887124164880216708158128018034556844782685981069181604022942994915425782551980871976861299998048891269382457746664537711907571620839647739814750246485785516407438456281016441530535883220900156793017803410210509030322894878644153412864183486232847383057037127530211743150297019986783707112500501512798227013895332013305299030067777744672675159963639279839695639892652623673910346029606492797364727032585139903284894030666973076184260952175328054705404307382990828457223501531801036863853251052117731640237771221916872219779975044436424353737563771860663940064507955383085961254432662373402096273091137925344867935172651751435457922440788132030052820380532472322899088632982871266967619390972594651696957927889498127193935771659001741409715013926870096827824344595250381927165114333292113768839242218227662000809463120087424797893028532721570708836040491514510467364416238094694471590557624405567353175899252479830073823769612605765296625472737581806196539655590504091232332908645824697430059719684807789476161998039497457056326589223095396322768184983125437505812159320925687908219638385076745895161808974301252249000446412551874975322548585604372956717706556786716292558396926674019299273322641823988937403487544411151102745429973099702256187363663055354342077737833166976346627691295930187829738821984003721917601058586059234304024985652363328557951259581243761680122281405247251081595463197717506979480799064477779018643381169179539449577676060946554136272308001965737882488945073560178980077647187788937126156995088626563023526466319896648878071014323950002238152572585094987274142534163830760430188237486011206003496858603748302058881535980540721909231069367638324185030814758451319183307713988680492400330857534515089026095057916310653727827952956048663599281832305414783189201638204582668572570283695297114261946607800148012600117898750702003012250665855759983780837443864575065901694102265493074243592986651730555285352895191418134440477847077114993952430867632548137487571022146449599537707431709930973811100808226687162731324891352724648461448857689233441555987280590055293361807409600606727000954050670872770111051113624088911271228520669417826720897121630769700157212932488306650944760130310385699492735306528633716580161154744735904126601866621453820584271524960595031210231106738028967955124147012307732099899596412792418060117104769266265622246116244337602008656601500915902705844357532007139737777773590073600118737727638570296676753197560400361672329033927141929241567128229690962780090903718291991294512132326602997017619361808738026293595575241328828296908269088591935482944798451230191141980773509166019147051824475852823480982683557049146544443815566349021505136795029032981240687628579336076509704210258817589448787971011709881307351724451614511265963989667741573865982117760084449319161827022457465347891267250557828415202747140711978363843606781229284320252301624821861473502725394859458382759889856588495019509828730090403809655159639196670228880666193124788838803982593576791091220226936362946044964783600300673407807699194653923973923888089841300130151236901447952697311143687526039273536736703056314044767142290618733816550091548787032857474367267402202612032531094003622579034406246172419402121602614892928007621575458008826659189424958950557502852892307058184380320855605981779229632628645824333284037667459150698173590917203503212666436515636663307428445392324320662809420760619229653463409908401980336707572938533413447116922979138227221553882230558724431703372459589566091382120080695163144644534303532694470409083142946031650134151445015171265163377945215406024632246839188301314866425454998097525732351080959343692077358975249070059139747869956262084300852700945987071695976788534233226360802074498975473011660654724479348909724529587410477125231458938606146353379566075505022693448370479945193297212744452710163732122315327953754728702257833165401422373581530032584441359616879409804321941248377954785622060159088764367672203482596613183200824592167617605674487322180456424381668084665161940337801078025416154600585104540072208651195610997117965836435510171548871450805504037500549241049545770707534438384410376048545848993459249531891736826614866013913616027185894618339904780160122007400723516670841774424043990726562735655812776016919412297392888690572077371324954518437996326595419417830525362051901026749544688491461489917126649633052831473436519026438918117102600848228367311794161745927117916732040495531671008296502446745543588778746211327082158522601541000817226112007916539654497434244500696085499127083390960475096582117915252098020083417301112924963450222294897254509701327429781474919026634444251971301922059431895057512466477081398243806749917837601372919866737318652784884471524829787942871002533172992176797805922808028709334624027946285022062305251250784824474050001995057966458539946674282806328460959647365875205038531243047055392398630745513823237519802115706544536920538785401844475294753317145650521101927665505794737887576281387175057693601076024121796047275333379809365338067909150595286406882232337103010595062570812691521401380629768254269336513555890985475728640524395983072994503390522534206151261740743086367583536454122075964025922717047388441847810835080677985313268017527017100747816992528655939818419230578667817048094272827380390654335385275409540789529212612104213443264039767935741332837276599581712253862195624831965531790448865840222389194642557576820055235687129813879899106173573608205597532205179901035469963210814234079010130780122608883408711252427781387512850560299000952756973585236143750786126192073775517264721051910054135501431511672390957293834929569062779323948542066904011424159050943785656525819998582561730636253051877599829267627710122129064895590354828439505419415174509483613892586282850526316518261465083651959045504187076687577697437871981237185398618934494872563080605084121742657353720744731877822840952189573051214470245327176033124281774604717632665219777677684366060226110930178618054684160958379178899663585932071905255969816450369359711496758744219667845962609655106486443174932902855981930400418582810824205817792101509225076624245980271482141295249641974915118950601885857676972598502051761902609039299858380582574245533515508233209940468427374329627816242754010782239109548734587502010030265365293589589572931708747864873655057283848517949296881739062702388774634109315977735190946437447217548451792232354910412567837650714541005852520073181932274563006590931257408525975715899976157332666492298413970273825834082332167715054546079719843042536124712967723203485000623489413009357347179328889916562601012184053205229135201624446916953153497044742359959386963496241749172551346837599989383221470537440791530882819154113496885605397097834835363739520693679000352017437852755072626475749280259285132830414793971350473607202719826416175384972239840989216082939629131136640859790161143894961636848770797956173100369425796795118326052300296091978082641739220930538833376908456162776899051189737105863974635295949773020204668977745328881735406348110484515108761633798492754133191476184552996794275438140425788458689741937199327823799574655176520704402421287398566143915412675988348678916165847247665340140047220271698425577332675209310316962645291330084974871451968392883103571520344060258487680957584685924275569540152241355062834294916445078648821622735636516661972433798520959523608603426302139528297799616850167241632837248709732543781780031713493931978889099911223963655788607448856391453937424920177264482506933535464411904271009435062787649125262432868860790865600799570829506432740051339058756137788766383806565368693298047837098616782157307465945224531264508494841006028454960905987879309562238944323283590643272946347961455731975282291614000255019876268857198617439166963985686213314143269874364535001276903596192088002059083527852176098425628848992533261468001795592087865407243604565832994170283137273959835166938060417762949861720975134205529069304580765889001605714019840552417849620688321532236637032971792635918252706475692342135531435015405038553623536990178575649686457580606875893145777678130438278259131587194083473762085771009765710200566766509427927416828191668237220749349034656893680037872247944065268820771054349823682958578447762432781213497889890386198873617886726193579016565127457403566129170620676188603337340039104050674917657999342380740429331566572270385829311797153914002661755008861358603593973329140043713887551045209946085673153665908206104979136992135083612743547115154761296765588302974559980985443204399594835714466458405090881926016237697377390745454510014541546351647258347943259435305110167245912559030643989385921674230804219382731960494402277439406279096520242744293950920784488619884261698780176503214984722101682005330779979887164520705721135797032348937768141214551024880266900948805553461440771695487275674374239059840040050119574594661520217622218248196899800700207403726237022923587448054110073935129252722017778440998699480315527186444648308895259750652271916451986703214316914240349151332862261534218462628827445902724475250347860902705669919581440405757720373879207414762375640818634872336611926420578283915711682912083822764140088001211425951882775952724832703892995655205162760702759902299445967717405975624686425364964968583011261765352165861476857915700339347516312928765936179811855311219378728666941130239017216481255568998580085030796796841907609350550834186562558130413284246169791532825834213949291936505377409956570349297048424695987220134286547896143647135816868268653650030586142883135503652500632533466039125868367961635618190239141340334302362229836785546272993170636041972546948447802427693608982536020325804792150239796787621788224937571329934034507070345458838983014902826918740257719032189672531096527565956873934227231623772647547878732478023060521698143758155185185869243038450267730664903386222753626188913335506324218749019822569313218371092099611077768412095897715098996116491966262597906780271498016781278682376620919703245202408119670205453865651869711976099366756275562023053172144332644239745040731751102660768533011889589921242445717863055309295034577968708792131098480207434852076388147463244139897764110564507703205000813429604304252741890171282127729633402733430215039807584424369799820777244659084522810460622839911122999265569625626927874101686745871102726364561175037770559271726943140805019031808688395826564961677682149183981975832582173689091875647480650645683231963359881358289827154596698015002176710560139764839894242514776199277634438180090582986823089139900209608282770763473431832894386099692377225961340226417704230947108436310398222641675801873992381430763965308852785241925966500777904565218776873067429491521812211232936674170695155876635145568380443045315287455911179934478728478399113288280080028022841897663084460147874742657616373772378812741192079417673497491417966068359425038823548732451122728072083078948982442483326046275517197729984458972279369290085368206219032566822242399564233423680748960980228976235658492841026550438459541661393093312464287620819783543164793168026241897250823701417815144027743032897665931315676234614078330333537928778064381581005226162032587147815037558934433313119111097032367423311747826386130738576586139148770084066653798311107437032841908244842404303956865239200457000074005037481881983765284762576529585710269254198341972347216961833107837039796152526799553781032381761431974473593508891895098109105783123517740030325192182077916732441258630489028374957735977787245064584140237338922259822056056602561827893879626517001449617412802285597512714192718501234290448428907642027805825185097845698492614894569258399184084268776152708900166319734570543712672538986268296843541437479539959092883826257331772922758015658673324415992123015900775134836155344043822674792344317172780704565180139924928981135626380904036543652034427042177110481288878123719083452830720078699839713475966938334176443988649523709970801098470696279513404758080072959556759793822081218234144727393010978123619641343284952541016672720790837047382294844608663416113009213979095893958851125450275802282367100963981470862992607536205271015208406719417415021906192829310766843876962407834623976940545206404612207077894936522303539491923333487586538415848860399728304442826290563687476332977737272524965491130135969894285638142885323731926523088570863029802294657671329843879805497734917899464452740384589742097942791155936259161222625726852306381735563096822959349632948729612984435061215148195418690224487475603909593334585171686502110351401500201767826466097081493920653218195004962120956106372509289658006012016354672244690966883917835642418869479026936988498608372715025980995995419235164001729972700842045039600529731108729174375581579980350752815265752075294931049576925229059065040146797810418033960683725015552107863170359668919204086703867075096225288336301318796134411866356504760902628408316227078609797189767670968377108145707941258499044546787965033259282177286951214307135415051521176339238591026391310579156244621923932294150094164301365510328665891156875588875147929863515232925265537776060168215938580069686749413745182098017990241835662446960061232811541103746673832982981111193654578808435246140699634776311842528787189771980208751596335356842082928987658780932649037069312368357045008117083414896874065614670943871600529537545490472217506654692092901452800572687990934229090757049808535183139477199808014208850065508138393003141011596904968050029379162201441641290926431491672813491205140607543203081685634688784853375671453214359616175694781175006766547365420139890387645746394910374995578098025372005471189779802601535592128413835333461135549397747426118504862242294486995562900105810989955582454750106840097575282585202831651768797927712495112891471354486308977858525276098524420360826293818048965029989992317986339219620971276371507467553662877496820619412476872820925312312349613686429602720003151348810139328644919070512762806758114396457144764759694528658851795665389528582732113563560848942844076746348789559227731899640338337891838251038145467179109630404953960016201140336859337628667427551710479972563698813859944446928529048793240404520260363680349782852762985824872800820939677426026545859121542981749002807850869044857893590195138163988716837525202961959788445954544640342633960417020180804282597757347439659073196028807105428502119551079603848671892947372884411421955434423329348911216585289734236718269914322660150048017386154292205397795437318073249356889421029554191129716971968472241866742058001651749330667164735028765042677731298768043596194492990264092822374584691975326778909679095277502901811156474585946396144625437499514779947285684394298722547938054564724533779119902921720050310258520455787489696247720798271814597685916279565774504311245262454300208320897413086332321071017426124317530050818764183799533725987226140387130784039338066550736532654819944914547394464731327847485418772384460779382459467898650714566043854467577077773153086494453133265828254443175876883288722308242167278341654970130961274250217570818018198560941055697479467102591620698122085114992131138558401623111729748102069922071490274720909935851606311818611817089931626287574538205016383344017310622881161772012430434423435257636201109772114163734110899078042404977678498003395627657750500639220867031198153227276542769705369277322339886813422955669204656145443293098243866517488608745265874545838279098511204858427208710905466096486469156265889502979744873843023578124868090253236836281978230565430605649006961909589439979856158233644081311126256090494476911163990573651990421493819687312792259633382526876011465154308684347857589470410016051332042998312405445511832827248060628189022451784742586723677408661850595690595265278581106696485705178054195664154327463464384377725426075913360211976171484463459174273204614776925177370635631975769783820751243912982497687718871686992120934432618722752995307870383659651606156039255128774782806082447048358130999701246821509850653201085445423324468766821314187502271414503531459642970387152158388803550426429425235702247042146747193330577584345097605219172595159383255988547839154862442993772078987589828991066782326518386789194513086598976522365069892452062064883835516666234134021523204995341484930326454931518766714477498779825677874011809421596662032517552445205772655890422886522168347756418896067504637671311673774881658373677514402526659540286500762060410286076126979965599843272733152629238053621868849679346586477794307480884422242318503976390533368759918394184378562670552397509673197151620120361381759307334609911345777406489372792089729511749859582631608738861357211445841977533800947939582709320015449946418973325885602554865572006791164022113634754592194586567582831524185518146024255932777951243158048647642166304699676623606955651215368997087112682699921873559476332776832919305538512829359591530304619489199566162980680979175920004747705796681516231295061463761641410328816204192838731737967903656112512405361861675326012911562242777052887190204148969496365436542962178223618176360307322769710448878895279734539401287121150290546201052895961510783534562812642425810140668203698178794670246865223992536488553557527781090268156753422202620379303207566538874190402998183958317801004870716861962465194593174304453671085241214814261108537051937257016133854501217598042453501389478998349360036581576004220277866845748958106216482740652256888985034954126963087852100251042470216309506847981996959327907439823261767985666921665672476465671753926333034132404678791293375431544721415572132544914764274682558127487491450362857288999229467526670533938828541991108451822079828754013715015079364074938449277992569343421820156800400177792626248141622085197596462772089278390855602694463688959658156087384319205455090310187013169942196335802362363651736004937424218932798231442736419656889092183208255136044193153244760193310753293499574489302555461303237911267249656457820293057312036745583447165753172115020419578136168491482152091596757458219707431236400001798832299503952368161971816345166363953136306998809629173168769076196951733228202890356413673323014663758626144016569182811618173662195845344024183168991134493977040811815485968776167435152287499073517905538951899003133793169123528348745923873059519782727659356251621291035145242252370615648294200091039465100646475026009608417792008030264360031453263833121457882387696792317535105468418843323010500944076808957204011552847129678294566135499571830094136725129636757757384673007802783821406293301195374432256551705640046309791853310496176134351060393809128473975251578983119015218095348823033828145149197825010255117975642622416657023072698624643274951809789888596047316477737139191893693152417246910880688877125449524765250024567638507958171066039351269035431382070621941208650728014069416077729166251357900191766601247781672644363879205126148659153803661869826039832167786571461019178128505595239558179208121052863197529705045976962050960284040476250425421405226514994484434941216895214815201597458740514385697807206619090039902284105835248436286026477802930991573970729765739553036343618458489123948892069760455270782348965574226050283855593279288526947271794896252272246520628178708073798767117633561136349660841753979101028589572962017835174616203995941
"When a measure becomes a target, it ceases to be a good measure" - Charles Goodhart
@online{Turok2025ARCAGI,
author = {Eitan Turok},
title = {A one-parameter model that gets 100% on ARC-AGI-2},
year = {2025},
url = {https://eitanturok.github.io/one-parameter-model/},
}
alpha = 0.9186525008673170697061215177743819472103574383504939864690954692792184358812098296063847317394708021665491910117472119056871470143410398692872752461892785029829514157709738923288994766865216570536672099485574178884250989741343121